gpt4 book ai didi

java - 如何知道程序监听哪个端口

转载 作者:可可西里 更新时间:2023-11-01 02:34:52 25 4
gpt4 key购买 nike

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

这是我的问题:

  1. 我如何确定该端口始终空闲?

  2. 如果另一个程序也在监听那个端口有什么影响吗?

  3. 如果端口必须空闲而默认端口被占用,如何我会通知客户端口号的变化吗?

  4. 我是否应该让服务器继续尝试绑定(bind)到一个新的端口,递增端口号直到找到空闲端口?

最佳答案

How can I be sure that that port is always free?

您可以使用“netstat”来检查端口是否可用。您可以通过以下方式列出服务正在使用的所有端口:

netstat -anp

如果你想搜索一个特定的端口,你可以使用:

netstat -anp |查找“端口号”,例如 netstat -anp |找到“:8080”

Does it matter if another program is also listening on that port?

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

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

If the port has to be free and the default port is occupied, how would I notify the clients of a change in port number? Should I just make it so the server keeps trying to bind to a new port, incrementing the port number until it finds a free port?

就我个人而言,我会选择一个始终空闲的端口,或者我知道通常空闲的一小部分端口,然后一个一个地尝试。

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

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com