2013-04-23 45 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中所述。