【问题标题】:Avoid Windows Firewall popup with sockets on localhost避免在本地主机上使用套接字弹出 Windows 防火墙
【发布时间】:2011-03-23 11:18:46
【问题描述】:

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

我面临的问题是弹出 Windows 防火墙询问我是否要取消阻止程序“接受传入的网络连接”。问题是:如果你让应用程序被阻塞也没关系,因为应用程序的实例总是在同一台机器上,所以它总是可以工作的。

我能否以某种方式通知 Windows,我什至不希望接受传入的网络连接?

【问题讨论】:

  • 澄清。您希望 Windows 防火墙自动阻止所有入站网络请求吗?
  • 我希望套接字只监听本地主机,监听传入的网络流量。换句话说,我不希望 Windows 防火墙首先显示任何弹出窗口。

标签: java sockets client-server localhost firewall


【解决方案1】:

使用 ServerSocket 类的 three parameter constructor 指定 IP 地址以及它应该侦听的服务器。这样,您可以限制服务器仅在 127.0.0.1 上侦听,这与默认值 0.0.0.0 不同。详情请见this related Stack Overflow question

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

【讨论】:

  • 太好了,这行得通!我曾尝试使用最后一个参数为InetAddress.getLocalHost() 的构造函数,但这显然是本地主机的网络地址。将其替换为InetAddress.getByName(null) 可避免弹出防火墙。
猜你喜欢
  • 2023-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-28
  • 1970-01-01
  • 1970-01-01
  • 2015-09-15
  • 1970-01-01
相关资源
最近更新 更多