curl可用于模仿持久(但空闲)的开放连接

时间:2013-01-15 13:44:26

标签: http curl firewall

我遇到一些Http客户端连接有问题,连续3次返回NoHttpResponseException。

我的假设是防火墙正在关闭空闲连接(并不罕见)。 我想用curl模仿这个。

我一直在尝试这样的事情,但很可能连接永远不会闲置

curl --keepalive-time 60 --limit-rate 128B $URL $URL $URL $URL $URL $URL $URL $URL $URL $URL $URL $URL $URL $URL

我想要的是类似于

的东西
curl $URL
sleep 10
curl $URL    
sleep 20
curl $URL 
sleep 30
curl $URL 

每次(使用一些魔法!)Curl重用相同的连接。

有没有办法使用curl(或wget)来完成这个,而不必编写程序来执行此操作

3 个答案:

答案 0 :(得分:15)

没有你用netcat做的事情。

REQ="GET / HTTP/1.1\nHost: localhost\nAccept: *\n\n"
(echo -ne $REQ; sleep 1; echo -ne $REQ; sleep 2; echo -ne $REQ) | netcat localhost 80

如果需要,可以将路径更改为/不同的内容......

答案 1 :(得分:5)

不,没有办法既没有卷曲也没有wget这样做。当工具退出时,关闭所有连接。

我会说最好的选择是使用脚本语言,也许是一个libcurl绑定,它允许你以更加编程的方式完成所有卷曲魔术。这样你就可以做一个请求,睡10秒然后做另一个请求,然后它会重新使用相同的连接 - 尽可能。

libcurl绑定可用于您选择的几乎任何编程语言,即使不使用libcurl,您也可以实现此功能,尽管可能不是很容易。

答案 2 :(得分:0)

我不确定但是如果您允许使用编程选项,那么PHP中的多卷曲可以为您提供预期的结果,您也不需要使用睡眠。 Multi-curl将在并行进程中运行所有请求。

Muti-Curl

如果你想使用它,我可以发给你代码。