Как эмулировать полную потерю сети между клиентом и сервером? - PullRequest
0 голосов
/ 06 ноября 2018

Я пытаюсь понять, будет ли клиент (в архитектуре клиент-сервер) при использовании «блокирующего» вызова каким-то образом полностью потерять другую сторону соединения без каких-либо признаков потери. Я думаю, что это может происходить нормально, так как большинство сетей иногда имеют проблемы. Дело в том, что я хочу продублировать идею: клиент подключается в режиме блокировки, сервер принимает соединение, затем исчезает, а затем, возможно, позже снова появляется, но не так, как сервер закрывает соединение, или 'nacks 'или что-нибудь.

Есть ли способ вызвать такое поведение в локальной сети?

И, как оказалось, это конкретное приложение написано на Go, но я не знаю, насколько это будет иметь значение.

1 Ответ

0 голосов
/ 07 ноября 2018

С риском быть глупым ... Вы рассматривали возможность отсоединения кабеля / выключения сетевого интерфейса вручную? Если это просто для проверки, что произойдет, если вы потеряете связь, это вариант.

Другой вариант - использовать брандмауэр вашей операционной системы для удаления определенного трафика, например, чтобы добавить правило с iptables в ОС на базе Linux.

//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

Конечно, вы можете выполнять эти команды в вашей программе, если вам нужно.

...