我正在使用套接字和 Java 编写聊天程序,我必须指定服务器监听的端口。
以下是我的问题:
我会通知客户端端口号的变化吗?
端口,增加端口号直到找到一个空闲端口?
最佳答案
您可以使用“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/