我要疯了!! 多谢各位大虾 上面的问题都解决了!又出现新问题了
CSocket *socket = new CSocket();
if (!socket->Create()){
int nError = socket->GetLastError();
}
socket->Connect("192.168.0.1",80); CSocketFile *file = new CSocketFile(socket); CArchive arIn(file,CArchive::store);
CArchive arOut(file,CArchive::load); arIn.WriteString("GET http://192.168.0.1/chap09.zip HTTP/1.1\r\n");
arIn.WriteString("Proxy-Connection: Keep-Alive\r\n");
arIn.WriteString("Host: 192.168.0.1\r\n");
arIn.WriteString("Accept: www/source, text/html, video/mpeg, image/jpeg, image/x-tiff\r\n");
arIn.WriteString("Accept: image/x-rgb, image/x-xbm, image/gif, */*, application/postscript\r\n");
arIn.WriteString("Cookie: filenameRZ0010037070570638430920031216103953.datnsr_id370705706384309pwd1\r\n");
arIn.WriteString("Content-type: application/x-www-form-urlencoded\r\n\r\n");
char buffer[1024];
//arIn.Write(buffer,1024); arIn.Flush();
int nCount;
do {
nCount = arOut.Read(buffer,1024);
}while(!arOut.IsBufferEmpty());我调用的时候如果请求的是本地的页面(http://localhost/...) arOut.Read函数就会阻塞在那里,而请求其他机器就不会。我捕捉了程序发的包,我看到虽然请求的页面已经接受完了,程序还是不停的发 Recv 。求救呀!!!!!

解决方案 »

  1.   

    象这种HTTP协议的实现感觉最好还是自己Recv解析最后2个'\r\n'最好,
    你说在本机总是不停的Recv最好是用抓包工具抓一下包就知道是怎么回事情了
      

  2.   

    程序还是不停的发 Recv ======================================================
       
         难道还是不停有数据收到吗?
     
         nCount = arOut.Read(buffer,1024);     这句没有返回零??
      

  3.   

    nCount = arOut.Read(buffer,1024);
    就是这行程序不返回呀!!!!arOut.Read函数就会阻塞在那里!!!
      

  4.   

    那你把buffer设小一点呢?char buffer[50];nCount = arOut.Read(buffer,50);其实最后这个循环不加也没有关系的
      

  5.   

    现在好了 我还是采用了flashboy(爱写程序的小绵羊) 的方法。分析一下包数据如果接受完了。就推出