用Socket下载HTML网页,为何文件没有下载完呀,高手给看看!代码是。。。

wang_bluebird 2005-03-22 10:39:16
CSocket sock;
sock.Create();
sock.Connect(m_url,80);
CString str;
str="GET / HTTP/1.1\r\n";
str+="Accept: image//gif, image//x-xbitmap, image//jpeg, image//pjpeg, application//x-shockwave-flash, application//vnd.ms-excel, application//vnd.ms-powerpoint, application//msword, *//*\r\n";
str+="Accept-Language: zh-cn\r\n";
str+="Accept-Encoding: gzip, deflate\r\n";
str+="User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)\r\n";
str+="Host:";
str+=m_url;
str+="\r\n";
str+="Connection: Keep-Alive\r\n\r\n";
sock.Send(str,str.GetLength(),0);
m_post=str;

CFile fp;
fp.Open("c:\\test.htm",CFile::modeCreate|CFile::modeWrite);
DWORD len=0;
char buf[4096];
memset(buf,0,4096);
len=sock.Receive(buf,4096);
fp.Write(buf,4096);
while(len>=4096)
{

memset(buf,0,4096);
len=sock.Receive(buf,4096);
fp.Write(buf,4096);
}
sock.Close();
fp.Close();
WSACleanup();
...全文
57 点赞 收藏 4
写回复
4 条回复
tomjun 2005年03月22日
//不能保证每次都能收到4096个字节
//但一旦收到的量为0,就表示接收完毕了
while(len != 0)
{

memset(buf,0,4096);
len=sock.Receive(buf,4096);
fp.Write(buf,4096);
}
回复 点赞
wang_bluebird 2005年03月22日
后面不是有循环继续下载吗?
如何修改呀???
回复 点赞
nuaawenlin 2005年03月22日
len=sock.Receive(buf,4096);
你只接收了4096个字节,
回复 点赞
good_0525 2005年03月22日
下载的是HTML吗?怎么这么大(4G多)!
回复 点赞
发动态
发帖子
网络编程
创建于2007-09-28

7880

社区成员

6.4w+

社区内容

VC/MFC 网络编程
社区公告
暂无公告