【问题标题】:Can I close the ServerSocket after accepting a client socket and establishing a connection?我可以在接受客户端套接字并建立连接后关闭 ServerSocket 吗?
【发布时间】:2015-05-15 08:58:51
【问题描述】:

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

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

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

你怎么看?

【问题讨论】:

    标签: java sockets tcp-ip


    【解决方案1】:

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

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

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

    【讨论】:

    • 感谢您的回答,很高兴知道这一点。我真的需要关闭套接字。你是怎么知道答案的——这是众所周知的和/或记录在案的,还是只是观察(我的也是如此)?
    • 相反,没有文档,有一些内部知识,对协议的理解,以及 25 年的经验。
    猜你喜欢
    • 1970-01-01
    • 2017-08-13
    • 1970-01-01
    • 1970-01-01
    • 2018-12-16
    • 2016-10-27
    • 2019-05-27
    • 1970-01-01
    • 2013-02-17
    相关资源
    最近更新 更多