找回密码
 立即注册
收起左侧

模仿论坛的源码写的局域网聊天软件出现的问题

4
回复
7142
查看
[复制链接]

尚未签到

来源: 2013-11-12 22:26:47 显示全部楼层 |阅读模式
1Qter豆
在Window下,模仿chat的源码写的聊天系统,发送消息后,接受端会读取到三次信息,翻看论坛前面的帖子发现在使用datagram.resize(udpSocket->pendingDatagramSize())后也不行,依然会出现上面的问题,求解答啊~!

最佳答案

查看完整内容

看过《实战》那本书了吗?这个程序要先把逻辑搞明白,其实发送消息用的是udp广播,但是因为这里每个终端既是服务器又是客户端,所以稍有不慎就会造成循环发送。 具体哪里的问题还是需要自己调试的。
回复

使用道具 举报

累计签到:1571 天
连续签到:1 天
2013-11-12 22:26:48 显示全部楼层
看过《实战》那本书了吗?这个程序要先把逻辑搞明白,其实发送消息用的是udp广播,但是因为这里每个终端既是服务器又是客户端,所以稍有不慎就会造成循环发送。

具体哪里的问题还是需要自己调试的。
回复

使用道具 举报

累计签到:14 天
连续签到:1 天
2014-8-25 23:43:52 显示全部楼层
yafeilinux 发表于 2013-11-12 22:26
看过《实战》那本书了吗?这个程序要先把逻辑搞明白,其实发送消息用的是udp广播,但是因为这里每个终端既 ...

采用udp广播,本机上能够发送而且能够接收,且接收正常,但是换成两台PC机通信就不行了,为什么?【我把那个udp例程收发整合到一个程序里面去了,不分客户端和服务端】
回复

使用道具 举报

累计签到:1571 天
连续签到:1 天
2014-8-27 21:31:47 显示全部楼层
11yichengming 发表于 2014-8-25 23:43
采用udp广播,本机上能够发送而且能够接收,且接收正常,但是换成两台PC机通信就不行了,为什么?【我把 ...

地址设置那里再看一下。
回复

使用道具 举报

累计签到:14 天
连续签到:1 天
2014-8-28 14:27:57 显示全部楼层
yafeilinux 发表于 2014-8-27 21:31
地址设置那里再看一下。

本机能发能收,这应该是没什么问题了吧?防火墙也关了。
关键代码如下:
    //接收绑定
    bool yes = receiver->bind(45454,QUdpSocket::ShareAddress  | QUdpSocket::ReuseAddressHint);

    //发送
    if((sender->writeDatagram(datagram,datagram.size(),QHostAddress::Broadcast,45454)) == -1){
        //qDebug()<<"send failed";
    }

    //接收
    void Widget::processPendingDatagram()
    {
    //qDebug()<<"process is entering....";
        while(receiver->hasPendingDatagrams())
        {
             ......
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了