我试图了解客户端(在客户端-服务器架构中)在使用“阻塞”调用时是否会以某种方式完全失去连接的另一端,而没有给出任何丢失的迹象。我认为这通常会发生,因为大多数网络有时会出现问题。问题是我想复制这个想法:客户端以阻塞模式连接,服务器接受连接,然后消失,然后可能稍后重新出现,但不是以服务器关闭连接或“nacks”的方式' 或任何东西。
有没有办法在本地网络中引发这种行为?
事实证明,这个特定的应用程序是用 Go 编写的,但我不知道这有多重要。
最佳答案
冒犯傻的风险...您是否考虑过手动移除电缆/关闭网络接口(interface)?如果这只是为了测试如果您失去连接会发生什么,那是一种选择。
另一种选择是使用操作系统的防火墙来丢弃特定流量,例如在基于 Linux 的操作系统中使用 iptables 添加规则。
//Block incoming port 80 (web)
$ sudo iptables -I INPUT -p tcp -m tcp --dport 80 -j DROP
//Block outgoing port 80 (web)
$ sudo iptables -I OUTPUT -p tcp -m tcp --dport 80 -j DROP
//Remove block incoming port 80 (web)
$ sudo iptables -I INPUT -p tcp -m tcp --dport 80 -j ACCEPT
//Remove block outgoing port 80 (web)
$ sudo iptables -I OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT
当然,如果需要,您可以在程序中执行此命令。
关于go - 如何模拟客户端和服务器之间的完全网络丢失?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53179876/