Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
设置或获取Java NIO TCP套接字缓冲区大小不清楚_Java_Sockets_Tcp - Fatal编程技术网

设置或获取Java NIO TCP套接字缓冲区大小不清楚

设置或获取Java NIO TCP套接字缓冲区大小不清楚,java,sockets,tcp,Java,Sockets,Tcp,我有一个程序,我使用socketchannel.socket.setBufferSize100*1024*1024设置套接字的缓冲区大小,操作系统是ubuntu。当我尝试使用getBufferSize验证该值时,我看到了值131071。从几篇文章中,我了解到setBufferSize中设置的值只是对方法的建议,而不是实际选取的值。我假设该值取自/proc/sys/net/ipv4/tcp\rmem。但在这里,我看到了完全不同的价值 我很困惑。set方法中提到的值是104857600,而get方法

我有一个程序,我使用socketchannel.socket.setBufferSize100*1024*1024设置套接字的缓冲区大小,操作系统是ubuntu。当我尝试使用getBufferSize验证该值时,我看到了值131071。从几篇文章中,我了解到setBufferSize中设置的值只是对方法的建议,而不是实际选取的值。我假设该值取自/proc/sys/net/ipv4/tcp\rmem。但在这里,我看到了完全不同的价值


我很困惑。set方法中提到的值是104857600,而get方法给出的值是131071。我在/proc/sys/net/ipv4/tcp_rmem中看到的值是4096 87380 6291456,其中6291456是与此无关的最大值。有人能给我解释一下这个策略是如何运作的吗

因此,您假设错误,最大值在其他地方设置。您好,您能告诉我从何处选取值以及它的实际工作方式吗131071是从/proc/sys/net/core/rmem_max选取的,而不是从tcp_rmem选取的。但我不确定这两者之间有什么区别。在这之前还有另一个问题。除非在连接或接受之前设置缓冲区大小>64k,否则不会从中获得任何好处。坦率地说,事后并没有那么多好处。我注意到了这一点。谢谢你宝贵的回复。