【发布时间】:2017-09-13 13:11:48
【问题描述】:
我必须通过 UDP 与某些设备通信。问题是如果没有bind() 的特殊情况,QUdpSocket 根本不起作用。我使用connectToHost()方法for access to read()/write() functions。
使用代码时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();
为什么行为如此奇怪?这怎么能理解?
【问题讨论】:
标签: qt network-programming udp qt5 qudpsocket