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

UDP广播通信问题

14
回复
11307
查看
[复制链接]
累计签到:14 天
连续签到:1 天
来源: 2014-8-25 23:13:52 显示全部楼层 |阅读模式
1Qter豆
我在本机上能进行通信,收发在一个程序内,简单代码如下:
  1. sender  = new QUdpSocket(this);

  2.     if((sender->writeDatagram(datagram,datagram.size(),QHostAddress::Broadcast,45454)) == -1){
  3.         //qDebug()<<"send failed";
  4.     }
复制代码
在本机上能够发送而且能够接收,且接收正常,但是换成两台PC机通信就不行了,为什么?

最佳答案

查看完整内容

你用qDebug把获取到的两台机器上的IP地址打印出来看看是不是在同一个网段。 两台电脑用无线网连在同一个网段内,有可能发生udp广播时使用的是联网线的那个网卡进行发送。
回复

使用道具 举报

累计签到:1 天
连续签到:1 天
2014-8-25 23:13:53 显示全部楼层
你用qDebug把获取到的两台机器上的IP地址打印出来看看是不是在同一个网段。
两台电脑用无线网连在同一个网段内,有可能发生udp广播时使用的是联网线的那个网卡进行发送。
回复

使用道具 举报

累计签到:14 天
连续签到:1 天
2014-8-25 23:16:51 显示全部楼层
大概是按照论坛上qt教程里面的udp广播通信来写的,只是合到一个程序里面去了。相当于群聊。但是在本机上能发能收,换成两台pC机就不行了,这是什么原因呢?
回复

使用道具 举报

累计签到:2 天
连续签到:1 天
2014-8-26 13:25:56 显示全部楼层

我在本机上能进行通信,收发在一个程序内,简单代码如下:
sender  = new QUdpSocket(this);

    if((sender->writeDatagram(datagram,datagram.size(),QHostAddress::Broadcast,45454)) == -1){
        //qDebug()<<"send failed";
    }
复制代码
在本机上能够发送而且能够接收,且接收正常,但是换成两台PC机通信就不行了,为什么?



确保防火墙关闭
回复

使用道具 举报

累计签到:14 天
连续签到:1 天
2014-8-26 18:22:48 显示全部楼层
老张 发表于 2014-8-26 13:25
我在本机上能进行通信,收发在一个程序内,简单代码如下:
sender  = new QUdpSocket(this);

防火墙都是关闭的,而且两台pc机都是连接到同一个路由器。这不是程序问题,我不知道哪里出了问题,因为后来我用官方的例程去试了也是不行的,不知大神知道是什么原因否?
回复

使用道具 举报

累计签到:2 天
连续签到:1 天
2014-8-26 20:18:56 显示全部楼层
udpSocket = new QUdpSocket(this);
     udpSocket->bind(QHostAddress:ocalHost, 7755);
官方的绑定是肯定是这样绑的吧,这是同一台机子的绑法,你看Java怎么绑定的DatagramSocket socket = new DatagramSocket(6801, InetAddress
                                                .getByName("192.168.8.17"));
                                socket.setSoTimeout(1);
回复

使用道具 举报

累计签到:2 天
连续签到:1 天
2014-8-26 20:36:33 显示全部楼层
比如你机子ip和你设的绑定ip最好为同一ip,绑定的端口无所谓,广播一广肯定都能接收
回复

使用道具 举报

累计签到:14 天
连续签到:1 天
2014-8-28 14:34:30 显示全部楼层
老张 发表于 2014-8-26 20:36
比如你机子ip和你设的绑定ip最好为同一ip,绑定的端口无所谓,广播一广肯定都能接收 ...

端口是无所谓,只要不是特殊端口和超出端口设置范围,相同即可。
ip绑定这样就可以了吧?
    bool yes = receiver->bind(45454,QUdpSocket::ShareAddress  | QUdpSocket::ReuseAddressHint);
回复

使用道具 举报

累计签到:2 天
连续签到:1 天
2014-8-28 16:32:01 显示全部楼层
可以的,只要别超出范围
回复

使用道具 举报

累计签到:14 天
连续签到:1 天
2014-8-28 22:15:56 显示全部楼层
老张 发表于 2014-8-28 16:32
可以的,只要别超出范围

e.....我知道。。我是问问题到底出现在哪里呢?或者有什么解决的办法?【我用了局域网通信工具飞秋测试过了,两台pc机是能够通信的。】
回复

使用道具 举报

累计签到:73 天
连续签到:1 天
2014-9-4 18:10:41 显示全部楼层
同求解决方法。。。我也是在本机上可以,没试过两天机子。。
回复

使用道具 举报

累计签到:14 天
连续签到:1 天
2014-10-8 19:48:33 显示全部楼层
NavcaLin 发表于 2014-9-4 18:10
同求解决方法。。。我也是在本机上可以,没试过两天机子。。

我还是没弄出来,弄了很久,你弄出来了吗?
回复

使用道具 举报

累计签到:73 天
连续签到:1 天
2014-10-8 20:38:41 显示全部楼层
11yichengming 发表于 2014-10-8 19:48
我还是没弄出来,弄了很久,你弄出来了吗?

我只有一台机子。。。之后就没有测试过。
回复

使用道具 举报

累计签到:14 天
连续签到:1 天
2014-11-26 18:15:04 显示全部楼层
NavcaLin 发表于 2014-10-8 20:38
我只有一台机子。。。之后就没有测试过。

找别人借台吧。我也只有一台。。
回复

使用道具 举报

尚未签到

2014-12-9 12:01:52 显示全部楼层
我这边也是在一台机上可以正常通信,跟开发板就不行了,单独测试能够ping通开发板,奇怪的是同样的程序运行到开发板上就没有问题,待解决中
回复

使用道具 举报

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

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