我在我们的软件中有一个错误,当我收到连接超时时发生。这些错误是非常罕见的(通常是当我的连接被我们的内部网络丢弃时)。我怎样才能人为地产生这种效果来测试我们的软件呢?
如果重要,应用程序是用c++ /MFC编写的,使用CAsyncSocket类。
编辑:
我尝试使用一个不存在的主机,我得到套接字错误:
无效的参数
我的下一个尝试是使用Alexander的建议,连接到不同的端口,例如81(在我自己的服务器上)。这很有效。与断开连接完全相同(等待60秒,然后出错)。谢谢你!
我在我们的软件中有一个错误,当我收到连接超时时发生。这些错误是非常罕见的(通常是当我的连接被我们的内部网络丢弃时)。我怎样才能人为地产生这种效果来测试我们的软件呢?
如果重要,应用程序是用c++ /MFC编写的,使用CAsyncSocket类。
编辑:
我尝试使用一个不存在的主机,我得到套接字错误:
无效的参数
我的下一个尝试是使用Alexander的建议,连接到不同的端口,例如81(在我自己的服务器上)。这很有效。与断开连接完全相同(等待60秒,然后出错)。谢谢你!
当前回答
10.0.0.0 10.255.255.255 172.16.0.0 172.31.255.255 192.168.0.0到 192.168.255.255
所有这些都是不可路由的。
其他回答
尽管还不完全清楚OP想要测试哪一个:尝试连接到不存在的主机/端口和超时已经建立的连接之间是有区别的。我会和罗布一起去,等连接好了再拉电缆。或者——为了方便起见——让虚拟机作为测试服务器(使用桥接网络),一旦建立连接,就取消激活虚拟网络接口。
Depending on what firewall software you have installed/available, you should be able to block the outgoing port and depending on how your firewall is setup it should just drop the connection request packet. No connection request, no connection, timeout ensues. This would probably work better if it was implemented at a router level (they tend to drop packets instead of sending resets, or whatever the equivalent is for the situation) but there's bound to be a software package that'd do the trick too.
10.0.0.0 10.255.255.255 172.16.0.0 172.31.255.255 192.168.0.0到 192.168.255.255
所有这些都是不可路由的。
您可以使用Python REPL来模拟接收数据时的超时(即在连接成功建立之后)。只需要一个标准的Python安装。
Python 2.7.4 (default, Apr 6 2013, 19:54:46) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import socket
>>> s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
>>> s.bind(('localhost', 9000))
>>> s.listen(0)
>>> (clientsocket, address) = s.accept()
现在它等待一个传入连接。将您想要测试的任何东西连接到localhost:9000。当你这样做时,Python将接受连接,accept()将返回它。除非您通过客户端套接字发送任何数据,否则调用方的套接字应该在下一次recv()期间超时。
我想提醒大家注意mitmproxy。
通过配置(取自他们的示例)200:b@100:dr,您将获得一个随机断开的连接。