我向系统发送命令并从中读取响应。我的机器是客户机,我成功地向服务器写入了一个数据包,但是,我无法收到来自它的响应。我很奇怪,为什么出现这种情况,请看看我的代码:(服务器地址为192.168.100.143,端口为11000)无法从QUdpSocket客户端读取
void UDP::UDPInit(int port)
{
socketPort = port;
udpsocket = new QUdpSocket(this);
}
void UDP::sendCommand(QByteArray data)
{
QHostAddress *host = new QHostAddress("192.168.100.143");
quint16 port = 11000;
if(udpsocket->writeDatagram(data.data(),QHostAddress(ip),socketPort)==-1)
emit clientLogMessage(QString("UDPCLIENT : Write problem !"));
else
udpsocket->flush();
while (!udpsocket->hasPendingDatagrams()) {
QByteArray datagram;
datagram.resize(udpsocket->pendingDatagramSize());
qDebug() << udpsocket->pendingDatagramSize();
udpsocket->readDatagram(datagram.data(), datagram.size(), host, &port);
emit dataReceived(datagram);
}
}
如果你在一个事件循环中,那么只需连接到udpsocket的'readyRead()'信号而不是循环 –
我可以问一下这个区别吗? – Sam
返回到偶数循环,不处理我在循环中看到的错误 –