与Qt的BootP和UDP套接字通信

时间:2014-02-24 09:13:48

标签: qt sockets udp qudpsocket bootp

我正在构建一个通过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

0 个答案:

没有答案