Посылаю много датаграмм разного размера на "сервер" посредтсвом udp, но не все датаграммы обрабатываются сервером. Проверил сниффером, на комп эти датаграммы доходят, но в программе не обрабатываются. Подумал о размере буфера сокета, но в доке написано:
Only QTcpSocket uses QAbstractSocket's internal buffer; QUdpSocket does not use any buffering at all, but rather relies on the implicit buffering provided by the operating system. Because of this, calling this function on QUdpSocket has no effect.
Сервак на винде.
Обрабатываю так:
if (!m_receiver.bind(QHostAddress::Any, 45454))
qApp->quit();
connect(&m_receiver, SIGNAL(readyRead()),
this, SLOT(processPendingDatagrams()));
void Receiver::processPendingDatagrams()
{
QByteArray datagram;
QHostAddress address;
while (m_receiver.hasPendingDatagrams()) {
datagram.resize(m_receiver.pendingDatagramSize());
m_receiver.readDatagram(datagram.data(), datagram.size(), &address);
}
}
Например из 3000 отосланных датаграмм теряется примерно 1000 (Размер пакетов от 200 байт до 1400. Шаг 20 байт. Количество пакетов каждого размера - 50). Что может быть?
P.S. Передаю по локальной сети.