避免使用localhost上的套接字弹出Windows防火墙

Pau*_*sma 13 java sockets firewall client-server localhost

我编写了一个简单的Java应用程序,它使用套接字与自身的多个实例进行交互.第一个实例自动承担服务器的角色,侦听特定端口,并且所有后续实例都连接到它.

我遇到的问题是Windows防火墙弹出询问我是否要取消阻止该程序"接受传入的网络连接".问题是:如果您将应用程序阻止,则无关紧要,因为应用程序的实例始终位于同一台计算机上,因此它始终有效.

我的问题是:我能否以某种方式告知Windows我甚至不希望接受传入的网络连接?

Vin*_*lds 13

使用ServerSocket类的三个参数构造函数来指定服务器应该监听的IP地址.这样,您可以将服务器限制为仅在127.0.0.1上侦听,而不像默认值0.0.0.0.有关更多详细信息,请参阅此相关的SO问题.

编辑:最好使用InetAddress.getByName(null)来获取本地地址.

  • 太好了,这个有效!我曾尝试使用最后一个参数为`InetAddress.getLocalHost()`的构造函数,但这显然是localhost的网络地址.用`InetAddress.getByName(null)`替换它可以避免防火墙弹出. (2认同)