• 7394阅读
  • 9回复

[提问]QUdpSocket广播的问题 [复制链接]

上一主题 下一主题
离线werther
 
只看楼主 倒序阅读 楼主  发表于: 2011-09-20
关键词: QUdpSocket
recv:
  1. recv->bind(port, QUdpSocket::ShareAddress);

sender:
  1. broadcastSocket->writeDatagram(localInfo.data(), localInfo.size(), QHostAddress::Broadcast, port);


广播后,本机可以收到信息,但局域网内的其他机子无法收到。

将QHostAddress::Broadcast 改成本地的IP, 本机可以收到信息。
可是将QHostAddress::Broadcast 改成局域网内的一台机子的IP,那台机子收不到消息……

我将防火墙都关了,还缺什么??
离线wxj120bw

只看该作者 1楼 发表于: 2011-09-20
回 楼主(werther) 的帖子
在同一网段吗?
离线werther
只看该作者 2楼 发表于: 2011-09-21
回 1楼(wxj120bw) 的帖子
是的
离线20091001753

只看该作者 3楼 发表于: 2011-09-21
  1. QHostAddress Udp_Address;
  2. Udp_Address.setAddress("192.168.0.100");
  3. broadcastSocket->writeDatagram(NeiRong.data(),NeiRong.size(),Udp_Address,12345);


你需要发到哪个IP,就设置成相应地址就OK了
(づ ̄ 3 ̄)づ
离线werther
只看该作者 4楼 发表于: 2011-09-21
回 3楼(20091001753) 的帖子
发给本机是成功的,发给局域网内的其他机子就失败
离线20091001753

只看该作者 5楼 发表于: 2011-09-21
Re:回 3楼(20091001753) 的帖子
引用第4楼werther于2011-09-21 12:55发表的 回 3楼(20091001753) 的帖子 :
发给本机是成功的,发给局域网内的其他机子就失败

你把你接收的槽代码贴出来看看
(づ ̄ 3 ̄)づ
离线werther
只看该作者 6楼 发表于: 2011-09-21

  1. connect(recv, SIGNAL(readyRead()), this, SLOT(readUdpData()));

  1. while(recv->hasPendingDatagrams()){
  2.         QByteArray datagram;
  3.         datagram.resize(recv->pendingDatagramSize());
  4.         
  5.         recv->readDatagram(datagram.data(), datagram.size());
  6. }
  7. qDebug() << "Recv msg";
信号都没发出,更别说槽了……
离线20091001753

只看该作者 7楼 发表于: 2011-09-21
引用第6楼werther于2011-09-21 15:38发表的  :
  1. connect(recv, SIGNAL(readyRead()), this, SLOT(readUdpData()));

[code]while(recv->hasPendingDatagrams()){
        QByteArray datagram;
        datagram.resize(recv->pendingDatagramSize());
.......

这样吧,我把我写的UDP收发程序给你,你留个联系方式,推荐是电子邮箱。

我的程序在我这里是可行的。我甚至做到了用手机给电脑发UDP。
(づ ̄ 3 ̄)づ
离线werther
只看该作者 8楼 发表于: 2011-09-22
回 7楼(20091001753) 的帖子
离线20091001753

只看该作者 9楼 发表于: 2011-09-22
Re:回 7楼(20091001753) 的帖子
引用第8楼werther于2011-09-22 11:44发表的 回 7楼(20091001753) 的帖子 :
werther0331@126.com
谢谢。

发了
(づ ̄ 3 ̄)づ
快速回复
限100 字节
 
上一个 下一个