读书人

CSocket取网页有20秒的假死,该怎么解决

发布时间: 2012-01-06 22:55:18 作者: rapoo

CSocket取网页有20秒的假死
m_szReceive = " ";
do
{
nRead = m_chsckt.Receive(szBuf, 4095);
szBuf[nRead] = NULL;
m_szReceive.Insert(m_szReceive.GetLength(), szBuf);

} while(nRead> 0);


while(nRead> 0);这样子来判断是否有数据可读结果就是程序假死。(我觉着就是超时)

请高人解答!




[解决办法]
放在后台线程里面把
[解决办法]
请求头里,应该加上Connection : Close

或者用1.0版本的请求,好象都会让对方服务器在发送完内容后自动断开连接

否则服务器放会一直保持连接,即使没有数据,你的while就会卡住
[解决办法]
有些服务器不会自动断开连接的,当你发送请求给服务器,然后服务器返回消息给你,之后连接还是保持着,直到XX秒后超时 服务器才主动关闭连接,楼主的可能是这种情况,解决方法就是读取Content-Lenth长度,然后recv这么多个字节后关闭连接

读书人网 >VC/MFC

热点推荐