【发布时间】:2015-08-15 21:00:29
【问题描述】:
为本地端口 80 和地址 ANY、127.0.0.1 或 0.0.0.0 添加入站 Windows 防火墙规则(通过 C++ 的 COM)不会阻止本地浏览器访问在端口 80 上运行的本地 Web 服务器。用于调试/测试目的,我需要模拟在同一台计算机上运行的两个程序之间的网络连接丢失。有没有办法以编程方式、在命令行上或使用工具来执行此操作?
在这个问题中,他们说据称在 Windows 防火墙中没有办法做到这一点:
How do I block localhost connections with the Windows 7/2008R2 firewall?
除了 Windows 防火墙之外,还有其他方法可以模拟同一台计算机上运行的程序之间的网络连接丢失吗?
【问题讨论】:
-
我会尝试不通过 127.0.0.1 来寻址您自己的计算机,而是通过它的真实 (LAN) IP 地址。真实 IP 和环回的处理通常通过非常不同的路径进行,因此您可能能够通过真实 IP 阻止您的连接,尽管您仍然在同一台机器上。另请注意,通过防火墙,您只能模拟一种类型的连接丢失(很可能是“黑洞”式丢失)。
-
使用“网络丢失模拟器代理”可能更容易,它侦听端口 A,随机丢弃数据包并将其余数据包转发到端口 B。将您的网络浏览器指向端口 A,并将网络服务器配置为B港。
-
也许在一对虚拟机中运行程序?
标签: c++ windows tcp network-programming loopback