为什么防火墙会阻止localhost连接?

时间:2014-01-20 09:46:48

标签: .net sockets tcp firewall socketexception

当我在localhost上侦听端口时,Windows将弹出一个对话框,用户必须将我的程序添加到防火墙例外列表中。这很烦人,需要管理员权限,用户可能没有。

为什么Windows会为环回连接(127.0.0.1)执行此操作,是否有一些技巧可以防止这种情况发生?

2 个答案:

答案 0 :(得分:4)

答案是指定:

IPEndPoint localEndPoint = new IPEndPoint(IPAddress.Loopback, Port);

而不是

IPEndPoint localEndPoint = new IPEndPoint(IPAddress.Any, Port);

用于监听套接字。乍一看,这似乎可以防止任何防火墙警告,并且不需要将任何规则添加到防火墙。但我必须做一些更广泛的测试,以确保它适用于所有Windows配置。

答案 1 :(得分:-2)

这样做是为了防止人们做坏事,如果一个程序通过localhost访问某些东西,它可能会以比通过非localhost这样做更高的权限执行任务。

示例:

  • localhost管理端口
  • 仅侦听localhost以阻止远程访问,文件索引服务的应用程序

没有办法避免弹出窗口,否则会有什么用呢?如果您的程序具有管理权限,则可以添加防火墙例外规则,从而阻止此弹出窗口。