我知道对于TCP,我们一次只能在一个端口上监听一个应用程序。现在,如果你有2个网卡,你可以让一个应用程序监听第一个IP,第二个应用程序监听第二个IP,使用相同的端口号。
现在在这种情况下如果我必须检查某个端口是否正在使用,我该怎么做?
我的意图是,即使有多个接口,端口也只能由一个应用程序使用。如果我列出所有接口并使用端口号与循环中的所有接口绑定,或者是否有更好的方法来执行此检查,这是否正常。
答案 0 :(得分:5)
我知道对于TCP,我们一次只能在一个端口上监听一个应用程序。
以下情况除外。
现在,如果你有2张网卡,你可以让一个应用程序在第一个IP上侦听,第二个在第二个IP上侦听使用相同的端口号。
正确。
现在在这种情况下如果我必须检查某个端口是否正在使用,我该怎么做?
见下文。
我的意图是即使有多个接口,也应该使用我唯一的一个应用程序。如果我列出所有接口并使用端口号与循环中的所有接口绑定,或者是否有更好的方法来执行此检查,这是否正常。
只需将其绑定到0.0.0.0:port
即可。在Java中,表示空InetAddress
和非零端口号。如果有任何应用程序正在侦听特定接口和相同的端口号,您将获得BindException
。相反,如果您是第一个,它将阻止任何其他应用程序以任何方式绑定到该端口。