for(int i = 0; i < 10000; i++)
{
char http[] = "GET / HTTP/1.1\r\nHost:www.baidu.com\r\nAccept:*/*\r\nUser-Agent:MSIE 8.0\r\nConnection:Keep-Aliv\r\n\r\n";
int sendSize = send(sConn, http, strlen(http) + 1, 0);
if(sendSize == -1)
{
continue;
}
printf("send:%d\n", sendSize);
while(TRUE)
{
char buffer[1024];
memset(buffer, 0, 1024);
int retSize = recv(sConn, buffer, 1024, 0);
printf("recv:%s\n", buffer);
if( retSize<=0 )
{
break;
}
}
system("pause");
}
27 个解决方案
#1
GET / HTTP/1.1\r\nHost:www.baidu.com\r\nAccept:*/*\r\nUser-Agent:MSIE 8.0\r\nConnection:
Keep-Aliv\r\n\r\n
#2
请兄弟指点,红色字是持久连接?
#3
我的意思是你不觉得你写错了吗
#4
我想连续请求N次,Connection改为close,也是只能请求一次?
#5
第一次能请求啊。recv回来HTML。第FOR第二三之后,发送能发送出去,接收就没有了
#6
Connection:Keep-Aliv
e
没有试过,不知道拼写错了有没有什么影响
没有试过,不知道拼写错了有没有什么影响
#7
网上复制的,人家也是这样写的?错了吗?
#8
http://www.vckbase.com/document/viewdoc/?id=1208
#9
Connection:Keep-Alive
Connection:Keep-Aliv
拼写错误一定会有影响的
Keep-Alive决定了能否复用连接进行下一次get
Connection:Keep-Aliv
拼写错误一定会有影响的
Keep-Alive决定了能否复用连接进行下一次get
#10
Connection:Keep-Aliv
现在改成这样写也不行,只能GET第一次...
#11
难到每一次连接都需要“建立连接”、“发送请求”这样子?
#12
send:127
recv:HTTP/1.1 200 OK
Date: Fri, 21 Jan 2011 13:24:49 GMT
Server: Apache/2.2.17 (Win32) mod_ssl/2.2.17 OpenSSL/0.9.8o PHP/5.3.5
X-Powered-By: PHP/5.3.5
Content-Length: 455
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html
第一次连接,返回这些东西。状态正常,第二次为什么就不可以呢?
recv:HTTP/1.1 200 OK
Date: Fri, 21 Jan 2011 13:24:49 GMT
Server: Apache/2.2.17 (Win32) mod_ssl/2.2.17 OpenSSL/0.9.8o PHP/5.3.5
X-Powered-By: PHP/5.3.5
Content-Length: 455
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html
第一次连接,返回这些东西。状态正常,第二次为什么就不可以呢?
#13
如果是服务器主动把这个连接关掉了,就设置Keep-Alive
#14
建议使用curl库
#15
HTTP协议基本就是这样子的
#16
用IE试试,如果可以重用连接,抓IE的包分析。
第二次请求模拟IE的Http格式发。
第二次请求模拟IE的Http格式发。
#17
所以说http 是无状态的
#18
好眼力。
#19
是没有返回, 还是返回没有数据?
连续请求同一页面, 不会返回数据的,与服务器设置有关 IE也是这样
#20
对于TCP连接,特别是http不支持多次连续连接,当服务器段发送完数据之后会把握手断开,这也是解决服务器负荷的一种措施,避免长时间连接导致服务器端资源的长时间浪费
#21
感觉第二次send的时候,应该会返回失败吧。
http服务,一般在发送完应答数据包后,会主动关闭连接。
可以重复 "请求,读应答,关闭连接"
http服务,一般在发送完应答数据包后,会主动关闭连接。
可以重复 "请求,读应答,关闭连接"
#22
http协议标准为一次请求一次连接
Keep-Alive 通常最多维持300秒,1.1版本支持,但是服务器不一定支持,服务器想什么时候close,与客户端想什么时候close一样,是各自的*
因此
1、简单安全的做法就是,一次请求,一次连接,不管服务器态度如何, 办完事,穿衣服走人:)
2、维持连接,编程就有点复杂了,需要监听套节字事件(通常FD_READ|FD_WRITE|FD_CLOSE),根据事件响应,确定后续行动...
Keep-Alive 通常最多维持300秒,1.1版本支持,但是服务器不一定支持,服务器想什么时候close,与客户端想什么时候close一样,是各自的*
因此
1、简单安全的做法就是,一次请求,一次连接,不管服务器态度如何, 办完事,穿衣服走人:)
2、维持连接,编程就有点复杂了,需要监听套节字事件(通常FD_READ|FD_WRITE|FD_CLOSE),根据事件响应,确定后续行动...
#23
对,我之前也是这种情况的,后来才知道
HTTP请求完一次后socket就close();,下次请求时再创建一次(不是连接,close()后SOCKET好像已经销毁了吧)
#24
#25
之前好象也碰到过这个问题,
友情帮顶。。。
友情帮顶。。。
#26
如果每次发包都要连接一次的话,
有的服务器检测到频繁连接服务器,就会拒绝连接。。。
有的服务器检测到频繁连接服务器,就会拒绝连接。。。
#27
初学学习下
#1
GET / HTTP/1.1\r\nHost:www.baidu.com\r\nAccept:*/*\r\nUser-Agent:MSIE 8.0\r\nConnection:
Keep-Aliv\r\n\r\n
#2
请兄弟指点,红色字是持久连接?
#3
我的意思是你不觉得你写错了吗
#4
我想连续请求N次,Connection改为close,也是只能请求一次?
#5
第一次能请求啊。recv回来HTML。第FOR第二三之后,发送能发送出去,接收就没有了
#6
Connection:Keep-Aliv
e
没有试过,不知道拼写错了有没有什么影响
没有试过,不知道拼写错了有没有什么影响
#7
网上复制的,人家也是这样写的?错了吗?
#8
http://www.vckbase.com/document/viewdoc/?id=1208
#9
Connection:Keep-Alive
Connection:Keep-Aliv
拼写错误一定会有影响的
Keep-Alive决定了能否复用连接进行下一次get
Connection:Keep-Aliv
拼写错误一定会有影响的
Keep-Alive决定了能否复用连接进行下一次get
#10
Connection:Keep-Aliv
现在改成这样写也不行,只能GET第一次...
#11
难到每一次连接都需要“建立连接”、“发送请求”这样子?
#12
send:127
recv:HTTP/1.1 200 OK
Date: Fri, 21 Jan 2011 13:24:49 GMT
Server: Apache/2.2.17 (Win32) mod_ssl/2.2.17 OpenSSL/0.9.8o PHP/5.3.5
X-Powered-By: PHP/5.3.5
Content-Length: 455
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html
第一次连接,返回这些东西。状态正常,第二次为什么就不可以呢?
recv:HTTP/1.1 200 OK
Date: Fri, 21 Jan 2011 13:24:49 GMT
Server: Apache/2.2.17 (Win32) mod_ssl/2.2.17 OpenSSL/0.9.8o PHP/5.3.5
X-Powered-By: PHP/5.3.5
Content-Length: 455
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html
第一次连接,返回这些东西。状态正常,第二次为什么就不可以呢?
#13
如果是服务器主动把这个连接关掉了,就设置Keep-Alive
#14
建议使用curl库
#15
HTTP协议基本就是这样子的
#16
用IE试试,如果可以重用连接,抓IE的包分析。
第二次请求模拟IE的Http格式发。
第二次请求模拟IE的Http格式发。
#17
所以说http 是无状态的
#18
好眼力。
#19
是没有返回, 还是返回没有数据?
连续请求同一页面, 不会返回数据的,与服务器设置有关 IE也是这样
#20
对于TCP连接,特别是http不支持多次连续连接,当服务器段发送完数据之后会把握手断开,这也是解决服务器负荷的一种措施,避免长时间连接导致服务器端资源的长时间浪费
#21
感觉第二次send的时候,应该会返回失败吧。
http服务,一般在发送完应答数据包后,会主动关闭连接。
可以重复 "请求,读应答,关闭连接"
http服务,一般在发送完应答数据包后,会主动关闭连接。
可以重复 "请求,读应答,关闭连接"
#22
http协议标准为一次请求一次连接
Keep-Alive 通常最多维持300秒,1.1版本支持,但是服务器不一定支持,服务器想什么时候close,与客户端想什么时候close一样,是各自的*
因此
1、简单安全的做法就是,一次请求,一次连接,不管服务器态度如何, 办完事,穿衣服走人:)
2、维持连接,编程就有点复杂了,需要监听套节字事件(通常FD_READ|FD_WRITE|FD_CLOSE),根据事件响应,确定后续行动...
Keep-Alive 通常最多维持300秒,1.1版本支持,但是服务器不一定支持,服务器想什么时候close,与客户端想什么时候close一样,是各自的*
因此
1、简单安全的做法就是,一次请求,一次连接,不管服务器态度如何, 办完事,穿衣服走人:)
2、维持连接,编程就有点复杂了,需要监听套节字事件(通常FD_READ|FD_WRITE|FD_CLOSE),根据事件响应,确定后续行动...
#23
对,我之前也是这种情况的,后来才知道
HTTP请求完一次后socket就close();,下次请求时再创建一次(不是连接,close()后SOCKET好像已经销毁了吧)
#24
#25
之前好象也碰到过这个问题,
友情帮顶。。。
友情帮顶。。。
#26
如果每次发包都要连接一次的话,
有的服务器检测到频繁连接服务器,就会拒绝连接。。。
有的服务器检测到频繁连接服务器,就会拒绝连接。。。
#27
初学学习下