UDP, данные отправляются корректно, дальше начинаю считывать данные по 1004 байт. После 38 кБайт прием почему-то прекращается, хотя данные устройство все также посылает (проверял WireShark). Думаю проблема в сигнале readyRead(). Но почему каждый раз ~38-39 кБайт? И как решить можно эту проблему?
void Commutator::onSokReadyRead()
{
QByteArray datagram;
while(_sok_udp->hasPendingDatagrams())
{
datagram.fill(0, _sok_udp->pendingDatagramSize());
QHostAddress *address = new QHostAddress();
_sok_udp->readDatagram(datagram.data(), datagram.size(), address);
}
}
Ты забыл указать размер байтового массива равным размеру дейтаграмы datagram.resize(socket->pendingDatagramSize());
может лучше receiveDatagram?
да, так даже лучше
Попробую, спасибо!
К сожалению, тоже самое. Получает данные, а потом останавливается
Проблема решилась. При записи использовал writeDatagram (QHostAdr::Broadcast, port), Что как оказалось нельзя было делать, в итоге, изменив Adr все заработало)
Обсуждают сегодня