udp Socket 发送缓冲区 最大可以为多大

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了udp Socket 发送缓冲区 最大可以为多大相关的知识,希望对你有一定的参考价值。

参考技术A 发送缓冲区可以很大,但是在真正发送数据时需要分片发送。分片发送需要满足以下条件:
1、给每个udp包加上序号。
2、校验字节
每个udp包的最大大小是多少?
65507 约等于 64K

为什么最大是65507?
因为udp包头有2个byte用于记录包体长度. 2个byte可表示最大值为: 2^16-1=64K-1=65535
udp包头占8字节, ip包头占20字节, 65535-28 = 65507

如果要发送的udp报文大于65507怎么办?
需要在应用层由开发者自己分片发送. 分片的粒度最大65507字节. 系统的sendto函数是不支持大于65507字节的单包发送的.本回答被提问者采纳

winsocket udp和tcp编程,缓冲区应该设置多大?

我准备写一个消息转发程序, 例如:A程序发送消息到我的程序,那么我的程序接受消息后再转发到B程序,
但是我不知道A程序发给我的消息有多大,所以我想把我的程序的缓冲区设置成socket 能接受的最大值,请问udp和tcp的消息缓冲区最大是多少?
可能有人会问我写这个程序的原因,我在这里说一下,因为A程序只能指定接收者的IP,不能指定接收者的端口,A程序的消息是固定发去1433端口的,所以我要写一个转发器,接受A程序的消息后,再转发去B程序的55433端口。

设置为1024,分包接收。 参考技术A Not A Single DayNot A Single DayNot A Single DayNot A Single DayNot A Single DayNot A Single DayNot A Single DayNot A Single DayNot A Single DayNot A Single DayNot A Single DayNot A Single DayNot A Single DayNot A Single DayNot A Single DayNot A Single DayNot A Single DayNot A Single DayNot A Single DayNot A Single DayNot A Single DayNot A Single DayNot A Single DayNot A Single DayNot A Single Day 参考技术B 猜猜看吧。 参考技术C 设置成1024循环读取不就可以了吗

以上是关于udp Socket 发送缓冲区 最大可以为多大的主要内容,如果未能解决你的问题,请参考以下文章

winsocket udp和tcp编程,缓冲区应该设置多大?

UDP Socket.SendTo是否可以执行不完整的发送?

Tcp可靠Udp不可靠原理

Python学习之——Socket套接字(UDP连接)

linux高性能网络编程读书笔记之socket

UDP 协议 C# UdpClient乱序接收数据包丢失的问题 Socket ReceiveBufferSize