Russian Qt Forum

Qt => Работа с сетью => Тема начата: ti0 от Декабрь 11, 2016, 20:23



Название: QUdpSocket большие пакеты
Отправлено: ti0 от Декабрь 11, 2016, 20:23
По документации writeDiagram возвращает количество переданных байт. Если -1, то пакет слишком большой. Собственно максимальный размер пакета - 32768. Но мне нужно больше. Можно как то увеличить этот размер? Например, указать размер буфера, и т.п. ?


Название: Re: QUdpSocket большие пакеты
Отправлено: qate от Декабрь 11, 2016, 22:09
ОС ?


Название: Re: QUdpSocket большие пакеты
Отправлено: ti0 от Декабрь 12, 2016, 00:47
Windows 10


Название: Re: QUdpSocket большие пакеты
Отправлено: qate от Декабрь 13, 2016, 14:13
думаю без вмешательства в настройки ОС увеличить нельзя
но т.к. пакет все равно будет фрагментирован сетевыми железяками, то передавать огромные udp смысла нет


Название: Re: QUdpSocket большие пакеты
Отправлено: Alex Custov от Декабрь 13, 2016, 14:45
никак. Единственный выход - ручная фрагментация и посылка кусочками. Причём (по крайней мере с использованием Qt 5.6.2) мне нужно было делать

Код
C++ (Qt)
for(... packets ..)
{
   socket.write(packets[i] ...);
   socket.flush();
   msleep(10);
}
 

в том потоке, где я шлю датаграммы. Иначе Qt видимо в буфере склеивало все кусочки опять в один и была снова ошибка DatagramTooLarge.