有一个关于QtSDK中网络广播的简单示例。发送和接收广播信息很容易。在接收方,我想知道我收到的广播包。我在readyRead信号回调函数中尝试QUdpSocket.peerName(),但我得到空字符串。任何线索?
答案 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()。除非你总是通过一个名字连接,否则我不会指望你总是能够进行反向查找并获得一个名字。