• 3000阅读
  • 3回复

[提问]QUdpSocket如何知道消息发送方的IP地址 [复制链接]

上一主题 下一主题
离线qq2632671
 

只看楼主 倒序阅读 楼主  发表于: 2018-07-11
现在我的电脑里,连接了一个设备,这个设备不断的通过UDP发送消息
我使用UDP接收消息
比如,我的电脑的IP地址是127.0.0.1,端口设为23333;然后有
  1. rece_Udp->bind(QHostAddress(IP_ADDRESS),PORT);

然后通过套接字ree_Udp接收消息,单现在的问题是,我电脑(服务器)连接了好几台设备(客户端),他们都会通过UDP向我的电脑里发送消息,怎么样知道每个消息过来是的(客户端)的IP地址呢?


离线never_forget

只看该作者 1楼 发表于: 2018-07-12
UDP  是无连接的,它只管接收设备某一个端口发过来的报文,甚至不会去管报文完整与否,你想要
IP 和端口,基本是不可能的,我查看了Qt 的文档,也没有看到相关的函数,你想要实现这个,可能要自己处理了,使用 TCP ,或者通过报文发地址来验证~
离线yanwuyue

只看该作者 2楼 发表于: 2018-07-12
  1. while(udp->hasPendingDatagrams())
  2.     {
  3.         QByteArray datagram;
  4.         QHostAddress sender;   //客户端sender.toString()IP地址
  5.         quint16 senderPort;   //客户端端口
  6.         datagram.resize(udp->pendingDatagramSize());
  7.         udp->readDatagram(datagram.data(), datagram.size(), &sender, &senderPort);
  8.         QString ip=sender.toString().replace("::ffff:","");
  9.     }


离线xllwanlxy

只看该作者 3楼 发表于: 2018-07-12
有现成的函数啊。
快速回复
限100 字节
 
上一个 下一个