2013-04-23 47 views
-1

我知道socket有setReceiveBufferSize方法,但为什么severSocket有一个方法。你知道如果接受连接,我会得到一个套接字来处理io的东西,所以我只关心套接字实例,我可以设置receiveBuffer。那么服务器setReceiveBufferSize的工作量是多少?为什么java serversocket有setrecievebuffersize方法?

public synchronized void setReceiveBufferSize (int size) throws SocketException { 
    if (!(size > 0)) { 
     throw new IllegalArgumentException("negative receive size"); 
    } 
    if (isClosed()) 
     throw new SocketException("Socket is closed"); 
    getImpl().setOption(SocketOptions.SO_RCVBUF, new Integer(size)); 
    } 
+1

该方法完全符合API文档中的规定。你为什么不在那里检查? – jarnbjo 2013-04-23 10:03:25

回答

0

由当时的ServerSocket已经接受了Socket为时已晚洽谈接收缓冲区大小> = 64K,因为在初始握手期间协商TCP窗口缩放选项。因此,它必须在ServerSocket上设置,并由接受的Sockets继承,如Javadoc中所述。