`
hereson
  • 浏览: 1454268 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

c++下载网页的代码,VC6.0编译通过

阅读更多

#include   <winsock2.h>  
#include   <fstream>
#pragma   comment(lib,   "ws2_32.lib ")   
using   namespace   std;   
    

   
void   main()  
{  
///初始化Socket函数库  
WSADATA   wsaData;  
if(   WSAStartup(MAKEWORD(2,0),   &wsaData)  
||   LOBYTE(wsaData.wVersion)   !=   2   )  
return;  
   
struct   protoent   *ppe;  
ppe=getprotobyname("tcp");  
   
///创建SOCKET对象  
SOCKET   sock   =   socket(PF_INET,   SOCK_STREAM,   ppe->p_proto);  
if(sock   ==   INVALID_SOCKET)  
return;  
   
///根据主机名获得IP地址  
hostent*   pHostEnt=gethostbyname("www.hjsm.net ");  
if(pHostEnt==NULL)  
return;  
   
int   nTime   =   10000;  
setsockopt(sock,   SOL_SOCKET,   SO_SNDTIMEO,   (char*)&nTime,   sizeof(nTime));  
setsockopt(sock,   SOL_SOCKET,   SO_RCVTIMEO,   (char*)&nTime,   sizeof(nTime));  
   
///连接  
struct   in_addr   ip_addr;  
memcpy(&ip_addr,   pHostEnt->h_addr_list[0],   4);///h_addr_list[0]里4个字节,每个字节8位  
   
struct   sockaddr_in   destaddr;  
memset((void   *)&destaddr,   0,   sizeof(destaddr));    
destaddr.sin_family   =   AF_INET;  
destaddr.sin_port   =   htons(80);  
destaddr.sin_addr   =   ip_addr;  
   
if(   0   !=   connect(sock,   (struct   sockaddr*)&destaddr,   sizeof(destaddr))   )  
return;  
   
///格式化请求  
char   request[]   =  
"GET   /   HTTP/1.1\r\n"  
// "GET   /book/2132/zip/gb.zip   HTTP/1.1\r\n"  
// "Host:read.hjsm.net\r\n"  
"Host:www.hjsm.net\r\n"  
"Accept:*/*\r\n"  
// "Referer:   http://curl.haxx.se/download.html\r\n "  
"User-Agent:Mozilla/4.0   (compatible;   MSIE   5.00;   Windows   98)\r\n"  
// "Range:   bytes=0-\r\n"  
"Pragma:   no-cache\r\n"  
"Cache-Control:   no-cache\r\n"  
"Connection:Close\r\n\r\n";  
// "Connection:Keep-Alive\r\n\r\n";  
   
///发送请求  
if(   SOCKET_ERROR   ==   send(sock,   request,   strlen(request),   0)   )  
return;  
   
//---------Response----------  
// HTTP/1.1   200   OK  
// Date:   Wed,   02   Feb   2005   08:42:09   GMT  
// Server:   Apache  
// Last-Modified:   Mon,   24   Jan   2005   13:17:07   GMT  
// ETag:   "37a9ef-7635b-459bac0"  
// Accept-Ranges:   bytes  
// Content-Length:   484187  
// Connection:   close  
// Content-Type:   application/zip  
   
// Transfer-Encoding:   chunked -   当有该行存在时,content会是分块传送,每块有一个头,格式:"[16进制块大小,string]\r\n"  
   
int   rcv_bytes   =   0;  
char   buf[2049]   =   {0,};  
ofstream   ofs("c:\\1.dat",   ios::binary|ios::out|ios::trunc);  
while(1)  
{  
rcv_bytes   =   recv(sock,   buf,   2048,   0);  
if(   rcv_bytes   <=   0   )  
break;  
   
ofs.write(buf,   rcv_bytes);  
break;  
}  
ofs.close();  
   
closesocket(sock);  
   
WSACleanup();  
}

分享到:
评论

相关推荐

    C++实现RC4源代码 VC6.0编译通过

    简单的RC4加解密程序,VC6.0编译通过

    x264-VC6.0编译通过加代码完整注释版.rar

    本篇文章将以“x264-VC6.0编译通过加代码完整注释版”为出发点,详细介绍如何在Windows环境下使用Visual C++ 6.0(以下简称VC6.0)进行x264的编译,并解读代码注释,为初学者提供一份详实的学习指南。 x264是开源...

    VC 6.0下编译调试ffmpeg

    在本文中,我们将深入探讨如何在Visual C++ 6.0(简称VC 6.0)环境下编译和调试FFmpeg源代码。 ### 1. 安装与配置VC 6.0 首先,确保你已经安装了Visual C++ 6.0,这是一个经典的开发环境,虽然较旧但仍然可以用于...

    vc6.0编译软件

    同时,它也适合熟悉旧版代码的开发者,因为许多遗留系统仍然依赖于VC6.0编译的代码。 **兼容性和局限性** 尽管VC6.0在当时是一个非常先进的工具,但随着时间的推移,它已不再支持现代的C++标准和特性,也不再获得...

    Crc源代码实现C++实现Vc6.0编译

    以上是关于"Crc源代码实现C++实现VC6.0编译"的相关知识点,涵盖了CRC校验的基本原理、C++实现的细节以及在VC6.0环境下进行编译的步骤。通过学习和理解这些知识点,你可以编写自己的CRC校验代码并应用于实际项目中。

    cjson使用例子,在vc6.0编译通过

    在VC6.0这样的较旧版本的Microsoft Visual C++环境中编译通过,意味着CJSON库兼容较低级别的C语言标准,这在处理老旧系统或嵌入式设备时特别有用。本文将深入探讨CJSON的使用方法、JSON的基本概念以及如何在VC6.0中...

    用c++实现车厢调度 在XP VC6.0编译通过

    车厢调度问题 C++实现 在XP VC6.0编译通过

    VC6.0编译的ucos-II

    在使用VC6.0编译UCOS-II时,需要注意以下几点: 1. **配置环境**:确保安装了正确的SDK和库文件,例如需要包含Windows API和必要的库支持。同时,设置好编译器选项,包括编译目标平台(通常为Win32)、编译模式...

    VC++操作WPS表格的类(VC6.0编译通过)

    总之,"VC++操作WPS表格的类(VC6.0编译通过)"示例为开发者提供了一种在C++环境中利用WPS Office进行数据处理的有效途径。通过理解和应用这个示例,开发者可以更好地集成WPS Office到自己的应用程序中,实现灵活的...

    wma 解码vc6.0 环境

    1. **编译环境**:VC6.0虽然是一款古老的开发工具,但它依然支持C++编程,并且对于许多老项目来说,它是必要的选择。确保安装了完整的服务包和更新,以解决可能的兼容性问题。 2. **源代码与库**:解码WMA需要相应...

    编译原理 语法分析 c++ vc6.0

    《编译原理与C++语法分析在VC6.0中的应用》 编译原理是计算机科学中的一个重要领域,它研究如何将高级编程语言转化为机器能够理解的指令。在这个过程中,语法分析是至关重要的一步,它涉及到如何解析源代码并构建...

    C++图书管理系统VC6.0上运行

    解压后,通过VC6.0打开工程,编译并运行,就能看到系统的实际效果。对于初学者来说,研究这样的项目代码不仅可以学习C++编程,还能了解到如何将理论知识应用于实际项目,是一次宝贵的学习机会。

    mapx 5.0 C++应用示例工程 VC6.0编译通过

    可编译使用的mapx应用程序,包含mapx.h mapx.cpp 要正常运行先装mapx5.0 注册mapx5.0 dll 解压密码见用户名

    VC6.0贪吃蛇代码

    VC6.0贪吃蛇 代码 有需要的可以下载 能在VC++6.0上面完美运行 希望对你有所帮助 望你能下载

    NetCDF 库 之 VC6.0 编译版本

    1. **下载源代码**:首先,你需要从官方网站或其他可靠来源下载NetCDF的源代码包,如`netcdf-4.0-for-vc6.0`。 2. **解压与配置**:将下载的压缩包解压到一个合适的目录,例如`C:\src\netcdf-4.0`。然后,打开VC6.0...

    VC6.0编译环境介绍

    通过对VC6.0编译环境的深入了解,我们不仅可以更高效地开发软件,还能在遇到问题时迅速定位和解决。虽然VC6.0已经不再是最新的开发工具,但它依然具有很高的学习价值,尤其是在学习C++编程语言及其底层原理方面。...

    编译原理 语义分析 c++ vc6.0

    《编译原理与C++语义分析在VC6.0中的应用》 编译原理是计算机科学中的一个重要分支,它研究如何将高级编程语言转换为机器可以理解的指令集,即汇编或机器码。这一过程包括词法分析、语法分析、语义分析和代码生成等...

    vc6.0-MSDN-CHM.rar_C++帮助 chm_MSDN_VC6_leaderqvv_msdn6.0

    通过这个压缩包中的CHM文件,开发者不仅可以系统地学习C++编程,还可以查询特定问题的解决方案,提升在VC6.0环境下开发C++应用程序的效率。尽管VC6.0已经较为老旧,但它的帮助文档对于理解C++的基础和深入概念依然...

    vc6.0.zip_vc6.0

    Visual C++ 6.0(简称VC6.0)是Microsoft公司推出的一款经典且强大的C++集成开发环境,它在编程领域中有着广泛的应用,尤其对于初学者和一些老项目维护者来说,仍然是不可或缺的工具。本篇文章将深入探讨VC6.0的核心...

Global site tag (gtag.js) - Google Analytics