首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

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

2012-01-06 
CSocket取网页有20秒的假死m_szReceive do{nReadm_chsckt.Receive(szBuf,4095)szBuf[nRead]NULLm_

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这么多个字节后关闭连接

热点排行