我必须通过 UDP 与某些设备通信。问题是QUdpSocket在没有特殊情况的情况下根本不起作用bind()。我使用connectToHost()方法来访问 read()/write() 函数。
使用代码时UDP交换根本不起作用:
m_udp.connectToHost(QHostAddress("192.168.100.15"), 4001);
m_udp.waitForConnected();
我没有收到任何字节。Wireshark 中的消息:
下面的代码也不起作用:
m_udp.bind(QHostAddress("192.168.100.15"), 4001);
m_udp.connectToHost(QHostAddress("192.168.100.15"), 4001);
m_udp.waitForConnected();
只有此代码有效:
m_udp.bind(4001);
m_udp.connectToHost(QHostAddress("192.168.100.15"), 4001);
m_udp.waitForConnected();
但该代码仅在 Qt 5.6.2 中有效,在 Qt 5.4.2 中无效。这是我尝试接收的方式:
dev->waitForReadyRead(500);
QByteArray ba = dev->readAll();
为什么行为如此奇怪?这怎么能理解?