发送大型UDP数据报

时间:2018-11-19 06:00:15

标签: .net vb.net udp

我有一个工作的客户端,可以将UDP数据发送到服务器。它工作正常,直到数据报大小达到我认为的MTU大小为止。然后发生碎片,数据丢失,如WireShark中所示:

enter image description here

仅看到第一个片段是由客户端发送的,没有片段到达服务器。我的理解是,只要有效载荷不超过UDP限制65507,碎片和重组将由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)

0 个答案:

没有答案