我正在构建一个通过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地址是否有效?还有其他可能的错误来源?我猜我的防火墙没有阻止数据包,因为它们在网络监视器中可见。
非常感谢这方面的意见:)
最佳, 的Morten