1.首先得用到WSADATA的东西(头文件如#include <winsock.h>)。
WSADATA wsaData;
WORD wVersionRequested = MAKEWORD(1,1);
int nRet;
nRet = WSAStartup(wVersionRequested, &wsaData);
if (nRet)
{
fprintf(stderr,"\nError initializing WinSock\n");
return ;
}
if (wsaData.wVersion != wVersionRequested)
{
fprintf(stderr,"\nWinSock version not supported\n");
return ;
}
2.发送的数据请求的头数据包如下:
strSend += " HTTP/1.0\r\n";
strSend += "Host: " + strHost + "\r\n";
strSend += "Accept: */*\r\n";
strSend += "Accept-Language: zh-cn\r\n";
// strSend += "Accept-Encoding: gzip, deflate\r\n";//update by
strSend += "User-Agent: Mozilla/4.0\r\n";
3.如果的数据小的话,就不需要采用压缩的方式。如果数据的文件过大就需要采用压缩数据的方式发送请求.
strSend += " HTTP/1.0\r\n";
strSend += "Host: " + strHost + "\r\n";
strSend += "Accept: */*\r\n";
strSend += "Accept-Language: zh-cn\r\n";
strSend += "User-Agent: Mozilla/4.0\r\n";
4.原因如下:
Accept-Encoding: gzip,deflate
IE和我们的代码使用的HTTP头里面都有这条内容,将这条内容删掉我得到了正确的结果。原因如下:
这条信息代表本地可以接收压缩格式的数据,而服务器在处理时就将大文件压缩再发回客户端,IE在接收完成后在本地对这个文件又进行了解压操作,所以文件内容是正确的。而在我们的代码里是将这些内容直接存入文件,不存在解压缩的过程,所以Size变小,内容也不一样。
细心的人可以发现在,IE在Down某一个比较大一点的东西时,Down的过程中显示的大小,比Down下来实际大小要小,这就是因为在接收的过程中接收的是压缩文件,而存到本地后的文件当然要大一些了哈~~