登录
首页 >  Golang >  Go问答

如何模拟客户端和服务器之间完全网络丢失?

来源:stackoverflow

时间:2024-04-04 22:03:35 247浏览 收藏

在Golang实战开发的过程中,我们经常会遇到一些这样那样的问题,然后要卡好半天,等问题解决了才发现原来一些细节知识点还是没有掌握好。今天golang学习网就整理分享《如何模拟客户端和服务器之间完全网络丢失?》,聊聊,希望可以帮助到正在努力赚钱的你。

问题内容

我试图了解客户端(在客户端-服务器架构中)在使用“阻塞”调用时是否会以某种方式完全失去连接的另一端,而不会给出任何丢失的迹象。我认为这可能会正常发生,因为大多数网络有时都会出现问题。问题是我想重复这个想法:客户端以阻塞模式连接,服务器接受连接,然后消失,然后可能稍后重新出现,但不是以服务器关闭连接或“nacks”的方式'或任何东西。

有没有办法在本地网络中引发这种行为?

事实证明这个特定的应用程序是用 Go 编写的,但我不知道这有多重要。


解决方案


冒着愚蠢的风险...您是否考虑过手动拔掉电缆/关闭网络接口?如果这只是为了测试如果失去连接会发生什么,这是一个选项。

另一种选择是使用操作系统的防火墙来丢弃特定流量,例如在基于 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

当然,如果需要,您可以在程序中执行此命令。

好了,本文到此结束,带大家了解了《如何模拟客户端和服务器之间完全网络丢失?》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>