1

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

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

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

谢谢

4

2 回答 2

1

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

于 2010-02-21T14:31:46.423 回答
0

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

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

于 2010-02-21T13:57:25.773 回答