我正在编写一个小程序来理解套接字。从recvfrom返回的最大数据长度是多少?
recvfrom(raw,packet_buffer,buf_size,...);
linux中的最大buf_size是多少。是否有与此size_t相关的常量?
由于
答案 0 :(得分:1)
这不是一个直接的答案......有点倾向于这个问题。对于TCP / IP,即使您确定系统上的最大大小,最好将代码实现为不依赖于此。使用面向流的套接字,多余的数据不会丢失。因此,您可以再次调用receive函数来检索剩余数据。但是,面向消息的(UDP)连接不是这样。
答案 1 :(得分:0)
我认为max是65535
个字节。它不依赖于MTU,因为它本身是由协议栈处理的。所以基本上你在网络上发送的有效数据包有很好的抽象。
2 ^ 16的选择应该是这样的,因为它是TCP窗口的最大大小(通常它不是64kb,但是更小):所以它是协议允许TCP连接的最大缓冲区。