我正在使用套接字和 Java 编写聊天程序,我必须指定服务器监听的端口。

以下是我的问题:

  • 我如何确定那个端口总是空闲的?
  • 如果另一个程序也在监听那个端口,这有关系吗?
  • 如果端口必须空闲并且默认端口被占用,如何
    我会通知客户端端口号的变化吗?
  • 我应该这样做,以便服务器不断尝试绑定(bind)到新的
    端口,增加端口号直到找到一个空闲端口?
  • 最佳答案



    您可以使用“netstat”来检查端口是否可用。
    您可以通过以下方式列出服务使用的所有端口:
    netstat -anp
    如果要搜索特定端口,可以使用:
    netstat -anp | find "port number" ,例如 netstat -anp | find ":8080"



    从传统的角度来看,是的,对于 TCP,您一次只能让一个应用程序监听同一个端口和同一个本地 IP 地址。通过使用多个网卡或虚拟网络接口(interface),您可以通过拥有多个本地 IP 地址来使用相同的端口。

    但是,使用 SO_REUSEPORT 套接字选项似乎可以重用它,请查看 this 以获取更多信息。



    就我个人而言,我要么选择一个始终免费的端口,要么选择一小部分我知道通常免费的端口,然后逐一尝试。

    选择端口的一般经验法则包括至少选择一个 4 位数字并避免任何低于 1024 的数字。
    此外,即使该端口已被其他服务使用,您也可以重新分配它以监听另一个端口,毕竟它是您的网络。

    关于java - 如何知道程序监听哪个端口,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54065745/

    10-11 22:26
    查看更多