2010-12-22 56 views
0

我使用 的ServerSocket(8080,1,InetAddress.getByName( “127.0.0.1”))如果ServerSocket接受连接,它是否继续等待进一步的请求?

现在在accept方法我获得SS的插座。我的问题是,一旦我得到Socket并继续我的处理,如果另一个请求在我的处理完成之前进入,ServerSocket是否接受该请求?

更新:我有一个while循环,如下面的答案接受连接。如果我继续处理我的请求,并且如果有另一个连接请求进入,它会被接受吗?我怀疑这个实例化吗?

回答

2

由于您已构建此积压为的ServerSocket,因此一次只能有一个未处理(不是accept() ed)连接。所有额外的连接尝试都将被拒绝。换句话说,backlog参数指定存储连接的队列的大小,直到它们被程序接受。

+0

然而,1的积压低于所有已知的最小值。在实践中,它将被调整*向上*到平台的默认值,通常为50。 – EJP 2010-12-22 22:48:44

2

如果调用重新接受的方法,所以如果你想接受多个连接,你可以有,只是自旋调用accept方法线程,像这样将只接受请求:

while(!stop) 
{ 
    socket.accept(); 
} 
2

它将处于待处理状态,直到您再次拨打accept。如果您收到多个请求,则最多可以保留一定数量,直到您到达accept。该限制是服务器套接字的队列大小。

+0

实际上,它将处于“已连接”状态,如果它适合积压队列。如果没有,这种行为是依赖于平台的。 – EJP 2010-12-24 00:11:38

相关问题