我已经有了一个错误我们的软件发生的时候我收到一个连接的超时。这些错误是非常罕见的(通常当我的连接获得下降了我们的内部网络)。我怎么能产生这种效果的人为的,所以我可以试验我们的软件吗?

如果它事项的程序是用C++编写/MFC使用CAsyncSocket课程。

编辑:

我已经尝试采用一个不存在的主机,并且我得到插座错误:

WSAEINVAL(10022)无效的论点

我的下一次尝试是使用 亚历山大's建议的连接到一个不同港口,例如81(上我自己的服务器,虽然).这工作很大。完全一样丢弃的连接(60二等一下,然后错误)。谢谢你!

有帮助吗?

解决方案

连接到现有的东道但到的一个端口,阻止通过防火墙,只是下降TCP SYN分组。例如,www.google.com:81.

其他提示

连接到一个不可路由IP地址,如10.255.255.1.

如果你是一台unix机器,你可以开口听使用netcat:

nc -l 8099

然后,修改你服务的话无论它通常不会要,例如口 http://localhost:8099/some/sort/of/endpoint

然后,你的服务将打开连接和编写的数据,但将永远不会得到响应,并因此会给你读的时间(而不是拒绝连接)

下面的网址一直提供超时,并结合了最好的@亚历山大和@鸸鹋是答案:

http://example.com:81

使用 example.com:81 是一种改进在亚历山大的回答,因为example.com 保留DNS标准,因此它将始终无法访问,不同 google.com:81,这可能会改变如果是谷歌的感觉。此外,因为 example.com 定义为无法到达,你不会被驱谷歌的服务器。

我要说这是一个改进@动车的回答,因为这是一个很容易记得.

你可以使用的蟒蛇REPL模拟超时同时接收的数据(即之后的连接已建立的成功).但没有一个标准的蟒蛇的安装是必要的。

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.当你做的时候,蟒蛇会接受连接和 accept() 将返回。除非你发送的任何数据通过 clientsocket, ,呼叫者的插座应时间出在下一个 recv().

  • 10.0.0.0
  • 10.255.255.255
  • 172.16.0.0
  • 172.31.255.255
  • 192.168.0.0
  • 192.168.255.255

所有这些都是不可路由。

我想每个人的注意 pathod

与config(从他们的实例)的 200:b@100:dr 你会得到一个连接的,随机的下降。

怎么一个软件解决方案:

安装SSH服务器的应用程序服务器。然后,使用座隧道,以创建之间的链接你的当地端口和远程端口上应用程序服务器。你可以使用ssh客户的工具这样做。有你的客户应用程序连接到你的映射的当地端口,而不是。然后,你可以打破的座隧道在将来模拟的连接的超时。

如果你想使用一个活跃的连接也可以使用 http://httpbin.org/delay/#, 其中#是你想要的时候他们的服务器等之前发送一个反应。只要你超时短于延迟...应该仿效。我已经成功地使用它的蟒蛇的请求,包。

你可能需要修改请求如果你在发送什么敏感-不知道发生了什么样的数据发送给他们。

有可提供的服务,让你可以人为地制造来源的超时通过调API指定服务器将作出回应。服务器超时上百战天龙是一例这样的服务。

例如,如果你想测试的请求,需要15秒钟内响应你只会做一个职位的请求的战API。

JSON有效载荷:

{
    "timeout_length": 15000
}

API响应(15秒后):

{
    "response": "ok"
}

服务器超时的节目在战
https://askmacgyver.com/explore/program/server-timeout/3U4s6g6u

你可能安装微软环回驱动程序,将创建一个单独的接口。然后你可以连接在一些服务的你的(你自己的主机)。然后在网络连接,可以禁用/使这样的接口...

尽管它不是完全清楚这一运想要试验:之间是有区别的尝试连接到一个不存在的主机/口和超时已经建立连接。我会去抢劫和等待,直至连接工作,然后拔线。或者为了方便有一个虚拟的机器作测试服务器(与桥接网络)和刚刚停用虚拟网络接口,一旦建立连接。

技术我经常使用模拟的随机连接的超时使用ssh的当地端口转移。

ssh -L 12345:realserver.com:80 localhost

这将向业务上localhost:12345到realserver.com:80 你可以循环,这周围在你自己的地方机以及,如果你想要的:

ssh -L 12345:localhost:8080 localhost

所以,你可以点你的应用程序,在你的localhost和定制的端口和交通将得到由到目标主持人:口。然后你可以退出此外壳(可能还需要按ctrl+c壳后你退出),它将杀死的转发这会导致您的程序看到一个连接损失。

塞在你的网络电缆插入一个开关有没有其他连接/电缆。应该工作恕我直言。

有几个战术我已经用过去的模拟网络的问题;

  1. 拉出来的网络电缆
  2. 关掉开关(理想的情况有关,电脑插入仍在电机维护它的"网络的连接")之间的机器和"目标"机器
  3. 运行的防火墙软件的目标的机器,静静地滴收到的数据

这些想法可能会给你一些手段的人为地产生的方案中你需要的

取决于什么样的防火墙的软件安装/可用,则应该能够阻止出口,并根据你的防火墙设置,它应该只是下降的连接请求分组。没有连接请求中,没有连接、超时随之而来。这可能会更好地工作,如果这是实现在一个路由器级(他们往往落分组而不是将重置的,或任何相当于是对的情况),但是那里一定是一个软件包,会做的诀窍。

最简单的事情将要放弃你的连接,使用 CurrPorts.

然而,为了单元测试你的例外处理代码,也许你应该考虑抽象网络连接的代码,写一根,嘲笑或装饰出的例外情况的需求。然后,你将能够测试的应用程序错误的处理逻辑,而不具有实际使用的网络。

我有问题沿着相同的路线你怎么做。为了测试软件的行为,我刚拔掉的网络电缆在适当的时间。我不得不设置一个断点的权利之前我想要拔掉电缆。

如果我是在做一遍,我把开关(通常关闭的瞬间按钮一)在一个网络电缆。

如果物理断开的原因一个不同的行为,你可以连接你的电脑便宜的中枢以及把开关我上面提到的之间的中心和主要的网络。

-编辑-- 在许多情况下你会需要的网络连接工作,直到你得到一定时候在你的程序,然后你就会想到断开使用的许多建议提供。

对我来说最简单的方法是增加的静态路线上办公室的路由器基础上的目的地网络。只是交通路线的一些反应迟钝的主(例如你的计算机)以及你会得到请求的超时。

最好的事情对我来说是静态的路线可以管理的过网接口以及启用/停用容易。

多好的答案,但是最干净的解决方案似乎是 这项服务

http://httpstat.us/504?sleep=60000

你可以配置的超时期(可达到230秒)和最终返回代码。

你可以尝试连接到一个知名网站上一个口,可不可以从外面-200例。大多数的防火墙的工作在下降的模式,它将模拟超时你。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top