Maximum buffer length for sendto?

前端 未结 3 1295
南方客
南方客 2020-12-09 06:01

How do you get the maximum number of bytes that can be passed to a sendto(..) call for a socket opened as a UDP port?

3条回答
  •  攒了一身酷
    2020-12-09 06:21

    As UDP is not connection oriented there's no way to indicate that two packets belong together. As a result you're limited by the maximum size of a single IP packet (65535). The data you can send is somewhat less that that, because the IP packet size also includes the IP header (usually 20 bytes) and the UDP header (8 bytes).

    Note that this IP packet can be fragmented to fit in smaller packets (eg. ~1500 bytes for ethernet).

    I'm not aware of any OS restricting this further.

    Bonus

    SO_MAX_MSG_SIZE of UDP packet

    • IPv4: 65,507 bytes
    • IPv6: 65,527 bytes

提交回复
热议问题