У меня есть работающий клиент, который отправляет данные UDP на сервер.Он работает нормально, пока размеры датаграмм не достигнут того, что я предполагаю, это размер MTU.Затем происходит фрагментация, и данные теряются, как видно из WireShark:
Виден только первый фрагмент, отправленный клиентом, и фрагменты не достигаютсервер.Насколько я понимаю, до тех пор, пока полезная нагрузка не превысит предел 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)