问题是一般性的,尽管我的简单程序是用Java编写的。它涉及TCP / IP连接。
我需要的是在建立客户端连接后尽快关闭服务器套接字。我一次只需要一个客户端,我不希望任何其他人能够连接。
我注意到如果我关闭服务器套接字,我仍然可以使用客户端套接字,但没有人正在侦听进一步的连接。实际上这对我来说完全没问题,但我不确定这种方法中是否存在隐藏的危险。
您怎么看?
答案 0 :(得分:4)
接受客户端套接字并建立连接后,我可以关闭ServerSocket吗?
是。侦听套接字和接受的套接字是完全独立的。
然而,在accept循环中执行所有客户端处理代码然后返回到accept更有意义,而不是按照惯例为每个客户端启动一个新线程。这样,其他客户端可以连接,但他们只是在第一个客户端完成之前才获得任何服务。因此,您不必将重试代码编入客户端。