有多个接口时检查正在使用的端口

时间:2014-12-15 07:19:52

标签: java tcp network-programming serversocket

我知道对于TCP,我们一次只能在一个端口上监听一个应用程序。现在,如果你有2个网卡,你可以让一个应用程序监听第一个IP,第二个应用程序监听第二个IP,使用相同的端口号。

现在在这种情况下如果我必须检查某个端口是否正在使用,我该怎么做?

我的意图是,即使有多个接口,端口也只能由一个应用程序使用。如果我列出所有接口并使用端口号与循环中的所有接口绑定,或者是否有更好的方法来执行此检查,这是否正常。

1 个答案:

答案 0 :(得分:5)

  

我知道对于TCP,我们一次只能在一个端口上监听一个应用程序。

以下情况除外。

  

现在,如果你有2张网卡,你可以让一个应用程序在第一个IP上侦听,第二个在第二个IP上侦听使用相同的端口号。

正确。

  

现在在这种情况下如果我必须检查某个端口是否正在使用,我该怎么做?

见下文。

  

我的意图是即使有多个接口,也应该使用我唯一的一个应用程序。如果我列出所有接口并使用端口号与循环中的所有接口绑定,或者是否有更好的方法来执行此检查,这是否正常。

只需将其绑定到0.0.0.0:port即可。在Java中,表示空InetAddress和非零端口号。如果有任何应用程序正在侦听特定接口和相同的端口号,您将获得BindException。相反,如果您是第一个,它将阻止任何其他应用程序以任何方式绑定到该端口。