我正在构建一个计算机客户端,它通过 UDP IP 从医疗病人监视器接收数据。我正在使用 QTs API,因此使用 QUdpSocket 类来建立通信。我要从中接收数据的监视器取决于要接收的 BootP 服务器和 IP 地址。这是成功实现的,我给它的IP是“192.168.10.10”。通过使用 Microsoft 网络监视器,我可以看到我想从我的程序中读取的数据包是从 - 源:192.168.10.10 发送到 - 目标:192.168.10.255。源端口和目的端口都是:24005。
我用来建立通信和读取数据报的代码如下:
connectIndicationPort=24005;
connectIndicationAddress=QHostAddress("192.168.10.255");
connectIndicationSocket = new QUdpSocket;
int test = connectIndicationSocket->bind(connectIndicationAddress, connectIndicationPort);
if(test)
{
qDebug() << "Connection to port "<< connectIndicationPort <<", at" << connectIndicationAddress << "succeeded.";
bool res = connect(connectIndicationSocket, SIGNAL(readyRead()), this, SLOT(readConnectIndicationDatagram()));
}
else
qDebug() << "Connection to port "<< connectIndicationPort <<", at" << connectIndicationAddress << "failed.";
我还尝试了 bind() 命令的不同变体:
connectIndicationSocket->bind(connectIndicationPort);
connectIndicationSocket->bind(connectIndicationPort, QUdpSocket::ShareAddress)
connectIndicationSocket->bind(QHostAddress::Broadcast, connectIndicationPort)
没有任何运气。
我对 IP 网络的经验很少,我不知道这在哪里失败。例如,将套接字绑定到目标地址是正确的还是应该是源地址?(我都试过了)。分配的 IP 地址是否有效?它可能是什么其他错误来源?我猜这些数据包没有被我的防火墙阻止,因为它们在网络监视器中可见。
非常感谢您对此的投入:)
最好的,莫滕