Java DatagramPacket (UDP) maximum send/recv buffer size

前端 未结 2 1657
别跟我提以往
别跟我提以往 2020-12-28 17:36

In Java when using DatagramPacket suppose you have a byte[1024*1024] buffer. If you just pass that for the DatagramPacket when sending/receiving will a Java re

2条回答
  •  隐瞒了意图╮
    2020-12-28 18:19

    @ Mihai Danila. Because I couldn't add a comment to the above answer, that's why writing into reply section.

    In continuation of your answer on MTU size, in my practice, I try to use NetworkInterface.getMTU()-40 for setting the buffer size of DatagramSocket.setSendBufferSize(). So, trying not to rely on getSendBufferSize() This is to make sure it matches different window sizes on different platforms and is universally acceptable on ethernet (ignoring dial-up for a moment). I haven't hardcoded it to 1460 bytes (1500-20-20) because on windows, the MTU size is universally 1500. However, windows platform's own window size is 8192 bytes, but I believe, by setting the SO_SNDBUF to < MTU, I am burdening the network/IP layer less, and for all the hops for routers and receivers, some overheads. Thus, reducing some latency over the network.

    Similarly, for the receive buffer, I am using a max of 64K or 65535 bytes. This way my program is portable on different platforms using different window sizes.

    Do you think it sounds OK? I have not implemented any tools to measure any differences but assuming that its the case based on what's out there.

提交回复
热议问题