Отправка больших UDP дейтаграмм - PullRequest
0 голосов
/ 19 ноября 2018

У меня есть работающий клиент, который отправляет данные UDP на сервер.Он работает нормально, пока размеры датаграмм не достигнут того, что я предполагаю, это размер MTU.Затем происходит фрагментация, и данные теряются, как видно из WireShark:

enter image description here

Виден только первый фрагмент, отправленный клиентом, и фрагменты не достигаютсервер.Насколько я понимаю, до тех пор, пока полезная нагрузка не превысит предел UDP в 65 507, фрагментация и повторная сборка будут обрабатываться IP, и все данные будут поступать на сервер.Есть ли что-то еще, что я могу сделать, чтобы отправить данные такого размера через UDP?

    Private Const UDPBufferSize As Integer = 5000                                               
    Private UDPBuffer As Byte() = New Byte(UDPBufferSize - 1) {}                                

    ServerUDPEndPoint = CType(New IPEndPoint(ServerIPAddress, UDPPortNumber), EndPoint)
    ListenerUDPEndPoint = CType(New IPEndPoint(IPAddress.Any, 0), EndPoint)             
    UDPSocket = New Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp)
    UDPSocket.Bind(New IPEndPoint(IPAddress.Any, UDPPortNumber))
    UDPSocket.BeginReceiveFrom(UDPBuffer, 0, UDPBuffer.Length, SocketFlags.None,
    ListenerUDPEndPoint, New AsyncCallback(AddressOf ReceiveUDPCallback), ListenerUDPEndPoint)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...