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


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

我遇到的问题是Windows防火墙弹出询问我是否要取消阻止该程序“接受传入的网络连接”。事情是: 如果您将应用程序阻止,则无关紧要,因为应用程序的实例总是在同一台机器上,所以它总能工作。

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


1098
2017-07-30 21:21


起源

澄清。您希望Windows防火墙自动阻止所有入站网络请求吗? - Caladain
我希望套接字只在localhost上侦听, 不 传入的网络流量。换句话说,我不希望Windows防火墙首先显示任何弹出窗口。 - Paul Lammertsma


答案:


使用 三个参数构造函数 ServerSocket类的名称,以指定服务器应该监听的IP地址。这样,您可以将服务器限制为仅在127.0.0.1上侦听,而不像默认值0.0.0.0。看到 这个相关的SO问题, 更多细节。

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


12
2017-07-30 21:27



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