QtSDK中有一个关于网络广播的简单例子。发送和接收广播信息很容易。而在接收端,我想知道我刚收到的广播包。我在readyRead信号回调函数中尝试QUdpSocket.peerName(),但是我得到了空字符串。任何线索?Qt网络广播问题:获取发件人IP
回答
从文档:
返回同位体的名称如由connectToHost(指定),或者如果connectToHost一个空的QString()没有被调用。
所以,如果你叫connectToHost()
你应该得到一个结果。您也可以尝试peerAddress()。除非你总是通过名字连接,否则我不会指望你总是能够进行反向查询并获得一个名字。
我应该在readyRead信号插槽中调用connectToHost()? – catinred 2011-05-03 15:00:47
当您使用QUdpSocket::readDatagram()读取数据包时,您可以检索发件人的IP地址。您需要将指针传递给readDatagram()的QHostAddress在其中存储地址:
QHostAddress senderAddress;
yourSocket->readDatagram(&data, size, &senderAddress);
// senderAddress now represents the sender address
如果你需要,请参阅文档QHostAddress你可以得到的地址从senderAddress为QString或整数。
如果你想要一个主机名,你可以使用QHostInfo做反向查找(但不能保证获得一个名称)。
在socket-> readDatagram之后,QString ip = socket-> peerAddress()。toString();我得到空字符串。 – catinred 2011-05-03 14:59:45
@cantinred编辑。您需要传递readDatagram()指向要存储地址的QHostAddress的指针。 – Leiaz 2011-05-03 15:29:12
@Leiaz它不起作用。接收广播数据包时,您获得的地址(位于senderAddress中)为0.0.0.0。我认为它也可以工作,但是要么是Qt做了一些愚蠢的事情,要么Linux的底层套接字实现为您提供了一个空的接收广播数据包的源地址。 – doug65536 2013-05-19 11:24:26
- 1. 从发件人获取IP
- 2. 如何获取所需广播地址的发件人IP:端口组合?
- 3. 如何从IP网络摄像头捕获和广播MJPEG流
- 4. 发送广播包问题
- 5. vb.net UDP广播显示来自发件人的IP
- 6. 从组播数据包获取发件人IP
- 7. 网络UDP广播设计?
- 8. 网络广播 - 灯塔-V1
- 9. 广播对等网络
- 10. 我在广播获取的问题,听取事件
- 11. 安卓网络改变广播接收器和获取网络类型
- 12. Gridview与广播列,广播id问题
- 13. NFC广播问题
- 14. UDP广播问题?
- 15. Angular $广播问题
- 16. UDP广播问题
- 17. 在android网络上获取个人电脑的IP地址
- 18. 获取无线网络地址问题
- 19. 网络信息android ip倒置问题
- 20. 如何从IP地址和子网中确定网络IP,网关和广播IP?
- 21. 如何使用IP上的IP和CIDR来计算网络和广播地址
- 22. 网络抓取 - 网络登录问题
- 23. UDP广播或IP多播?
- 24. 广播您的互联网IP
- 25. 在Android中获取网络IP地址
- 26. 获取网络用户的IP地址
- 27. 没有广播的局域网上的网络发现
- 28. qt - 基于网络的位置获取
- 29. Java并发网络问题
- 30. zeromq广播到整个网络
youu找到任何解决方案 – Xsmael 2017-03-08 17:05:59