如何故意丢失源自可执行文件的数据包

How to deliberately lose packets originating from an executable

我正在测试一些基于 getaddrinfo 挂起的代码。如果 getaddrinfo 永远得不到响应,它可能会挂起。因此,我正在尝试使用调用 getaddrinfo 的简单程序在我的 mac 上对此进行测试。我希望我可以拦截源自我的可执行文件 (a.out) 的数据包并丢弃它们。有没有办法做到这一点或任何其他方法来测试这个?

我认为拒绝访问 exe 是行不通的,因为它仍然会得到响应并出错,所以我真的不确定除了“丢失”数据包之外的其他方法,所以它永远不知道是否它失败了或者只是在等待。

谢谢!

编辑 /etc/resolv.conf 并将其指向受防火墙保护的地址。然后 getaddrinfo() 将不会收到响应,您可以看到挂起。剧透:一段时间后超时。有些人真的不想长时间停顿,在后台线程中调用它。