Я отправляю команду в систему и читаю от нее ответ. Моя машина клиентская, я успешно пишу пакет на сервер, но не могу получить от него ответ. Мне интересно, почему это происходит, посмотрите мой код: (адрес сервера 192.168.100.143 и порт 11000)
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);
}
}
readyRead()
udpsocket вместо этого цикла while - person ratchet freak   schedule 23.10.2013QHostAddress *host = new QHostAddress("192.168.100.143");
. Там нет причин использовать указатель. Вы должны создать его следующим образом:QHostAddress host("192.168.100.143");
- person thuga   schedule 24.10.2013bind()
и привязать свой объектQUdpSocket
к адресу, если вы хотите прослушивать дейтаграммы.bind()
возвращает true, если он был успешно связан, не забудьте проверить это. - person thuga   schedule 30.10.2013