我可以在接受客户端套接字并建立连接后关闭 ServerSocket 吗?

Can I close the ServerSocket after accepting a client socket and establishing a connection?

问题很笼统,虽然我的简单程序在Java。它涉及 TCP/IP 个连接。

我需要的是建立客户端连接后尽快关闭服务器套接字。我一次最多需要一个客户端,我不希望任何其他人能够连接。

我注意到,如果我关闭服务器套接字,我仍然可以使用客户端套接字,但没有人在监听进一步的连接。其实这对我来说完全没问题,但我不确定这种做法是否存在一些隐患。

你怎么看?

Can I close the ServerSocket after accepting a client socket and establishing a connection?

是的。监听套接字和接受套接字是完全独立的。

然而,在接受循环中执行所有客户端处理代码然后返回接受可能更有意义,而不是按照惯例为每个客户端启动一个新线程。这样,更多的客户端可以连接,但在第一个客户端完成之前,他们将无法获得任何服务。因此,您不必将重试代码写入客户端。