1

我正在构建一个计算机客户端,它通过 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 地址是否有效?它可能是什么其他错误来源?我猜这些数据包没有被我的防火墙阻止,因为它们在网络监视器中可见。

非常感谢您对此的投入:)

最好的,莫滕

4

0 回答 0