我使用TIdTCPServer在Delphi中创建了一个测试服务器程序,它通过调用IdTCPServer1.Bindings.Add为绑定添加多个端口来模拟同一台PC上的多个服务器。这很好用。
但我还想模拟一个应该向客户端返回套接字错误的端口的网络拔出错误。我为该端口尝试了Bindings.Delete并尝试了CloseSocket但没有成功。有关如何通过禁用或删除端口来模拟该错误的任何想法?
答案 0 :(得分:0)
我发布此评论作为评论,但现在我想到了,我相信这是“最佳方法”的答案(虽然可能不是你所希望的):
操作系统将“保护”您,因此在单台计算机上模拟网络错误几乎是不可能的头痛。
但是,使用VM(虚拟机),您可以轻松地执行此操作 - 使用VM作为“客户端”连接到您的服务器应用程序,然后在没有警告的情况下终止VM(关闭虚拟机电源) - voilà发生网络错误。
或者,在原始套接字上实现用户登陆TCP / IP协议,绕过OS内核层...... VM更容易。