Qt网络广播问题:获取发件人IP

时间:2011-05-03 13:53:16

标签: qt networking udp broadcast

有一个关于QtSDK中网络广播的简单示例。发送和接收广播信息很容易。在接收方,我想知道我收到的广播包。我在readyRead信号回调函数中尝试QUdpSocket.peerName(),但我得到空字符串。任何线索?

2 个答案:

答案 0 :(得分:2)

使用QUdpSocket::readDatagram()读取数据包时,您可以检索发件人的IP地址。您需要传递给readDatagram()一个指向QHostAddress的指针,用于存储地址:

QHostAddress senderAddress;
yourSocket->readDatagram(&data, size, &senderAddress);
// senderAddress now represents the sender address

如果需要,您可以从senderAddress获取地址作为QString或整数,请参阅QHostAddress的文档。

如果您需要主机名,可以使用QHostInfo进行反向查找(但不能保证获得名称)。

答案 1 :(得分:0)

来自文档:

  

返回connectToHost()指定的对等体名称,如果尚未调用connectToHost(),则返回空QString。

所以,如果你打电话给connectToHost(),你应该得到一个结果。您也可以尝试peerAddress()。除非你总是通过一个名字连接,否则我不会指望你总是能够进行反向查找并获得一个名字。