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);这样子来判断是否有数据可读结果就是程序假死。(我觉着就是超时)请高人解答!

解决方案 »

  1.   

    socket编程好像有个select可以判断是否有数据可读
    不知CSocket怎么弄
    大家同情新人,实在没分了!
      

  2.   

    请求头里,应该加上Connection : Close或者用1.0版本的请求,好象都会让对方服务器在发送完内容后自动断开连接否则服务器放会一直保持连接,即使没有数据,你的while就会卡住
      

  3.   

    再或者你把服务器的回应头里,查下Content-Length的值,
    应该就是要接受的字节,收到这么多之后,你自己关闭
      

  4.   

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

  5.   

    Moon1(静静的黎明)老师 说的第一套方案有什么不好的影响吗?有时侯,只返回协议头,无内容.我是接受到字里面含有</html>就断开,可是还有只返回协议头,无内容.的问题