如何知道程序监听的端口

Cad*_*117 3 java ip port routing tcp

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

这是我的问题:

  1. 我如何确定该端口始终是免费的?

  2. 如果另一个程序也在监听该端口是否重要?

  3. 如果端口必须是空闲的并且默认端口已被占用,我将如何通知客户端端口号的更改?

  4. 我应该这样做,以便服务器继续尝试绑定到一个新端口,递增端口号,直到找到一个空闲端口?

imr*_*mos 5

我如何确定该端口始终是免费的?

您可以使用"netstat"检查端口是否可用.您可以通过以下方式列出服务使用的所有端口:

netstat -anp

如果要搜索特定端口,可以使用:

netstat -anp | find "port number",例如netstat -anp | find ":8080".

如果另一个程序也在监听该端口是否重要?

从传统的外观来看,对于TCP,您只能让一个应用程序同时侦听同一端口和相同的本地IP地址.通过使用多个网卡或虚拟网络接口,您可以通过多个本地IP地址来使用相同的端口.

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

如果端口必须是空闲的并且默认端口已被占用,我将如何通知客户端端口号的更改?我应该这样做,以便服务器继续尝试绑定到一个新端口,递增端口号,直到找到一个空闲端口?

就个人而言,我要么选择一个总是免费的端口,要么选择我知道通常免费的一小部分端口,并逐个尝试.

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