recvfrom max buffer TCP / IP

时间:2010-02-21 13:54:02

标签: network-programming tcp recv

我正在编写一个小程序来理解套接字。从recvfrom返回的最大数据长度是多少?

recvfrom(raw,packet_buffer,buf_size,...);

linux中的最大buf_size是多少。是否有与此size_t相关的常量?

由于

2 个答案:

答案 0 :(得分:1)

这不是一个直接的答案......有点倾向于这个问题。对于TCP / IP,即使您确定系统上的最大大小,最好将代码实现为不依赖于此。使用面向流的套接字,多余的数据不会丢失。因此,您可以再次调用receive函数来检索剩余数据。但是,面向消息的(UDP)连接不是这样。

答案 1 :(得分:0)

我认为max是65535个字节。它不依赖于MTU,因为它本身是由协议栈处理的。所以基本上你在网络上发送的有效数据包有很好的抽象。

2 ^ 16的选择应该是这样的,因为它是TCP窗口的最大大小(通常它不是64kb,但是更小):所以它是协议允许TCP连接的最大缓冲区。