Network programming recvfrom最大缓冲TCP/IP

Network programming recvfrom最大缓冲TCP/IP,network-programming,tcp,recv,Network Programming,Tcp,Recv,我正在写一个小C程序来理解套接字。从recvfrom返回的数据的最大长度是多少 recvfrom(原始、数据包缓冲区、buf大小等) linux中的最大buf_大小是多少。是否存在与此大小相关的常数 谢谢我想max是65535字节。它不依赖于MTU,因为它由协议栈自己处理。。所以基本上你对网络上发送的有效数据包有一个很好的抽象 选择2^16应该是这样的,因为它是TCP窗口的最大大小(通常不是64kb,而是更小):所以它是协议允许TCP连接的最大缓冲区。我认为最大值是65535字节。它不依赖于MT

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

recvfrom(原始、数据包缓冲区、buf大小等)

linux中的最大buf_大小是多少。是否存在与此大小相关的常数


谢谢

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


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

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


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

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

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

为什么不查看内核源代码?您可能需要四处寻找它,但答案就在那里的某个地方。为什么不看看内核源代码呢?你可能需要四处寻找它,但答案就在那里的某个地方。不,它比这个大得多,默认情况下,它是系统内存大小的函数。现在,在大多数系统上,它只有几兆字节。不,它要大得多,默认情况下,它是系统内存大小的函数。现在在大多数系统上,它只有几兆字节。