我正在用 Java 开发一个 Web 应用程序,该应用程序由端口 80 上的 Tomcat 容器提供服务。另一个 CLI 应用程序正在连接到该 Web 应用程序。我想测试当连接意外断开时,此 CLI 应用程序是否能够重新连接,以及 Web 应用程序是否正在正确清理。
停止 ( sudo service stop tomcat8
) 或终止 ( kill -9 <pid>
) Tomcat 时,连接会以标准方式断开。也就是说,CLI 应用程序会BYE
从 Web 应用程序接收一个帧。我想测试当出现超时、连接突然断开时会发生什么。
是否可以禁用本地主机网络对端口 80 的访问,以使得 Web 应用程序或客户端都没有时间发送其BYE
帧?
答案1
在服务器上使用iptables
,阻止它向客户端发送数据包以及从客户端接收数据包:
sudo iptables -A OUTPUT -p tcp --sport 80 -j DROP
将阻止服务器到达客户端;并且
sudo iptables -A INPUT -p tcp --dport 80 -j DROP
将阻止客户端到达服务器。sport
代表源端口和dport
目标端口。
这完全独立于tomcat
服务器进程,并且(对于客户端和服务器而言)看起来就像连接突然中断了一样。我确信即使客户端和服务器位于同一台主机上,这也能正常工作。
查看当前实施的规则:
sudo iptables -L
使用以下命令删除所有现有规则:
sudo iptables -F