http://blog.csdn.net/segen_jaa/article/details/6278167

背景:

功能:服务端下载文件

服务端:用Java写Sevlet进行有效性验证

客户端:用C++写程序,获取文件

C++使用下载类为MFCWinInet,下载协议为HTTP。

MFCWinInet下载优缺点如下。

优点:使用封装类,直接调用相关方法,使用方便。

缺点:多线程下载,线程数受注册表限制,XP下默认为两个。

WinInet(“Windows Internet”)支持三种协议:

1、HTTP:Hypertext Transfer Protocol(超文本传输协议);

2、FTP:File Transfer Protocol(文件传输协议);

3、Gopher文件传输协议。

MFCWinInet HTTP协议,使用类为:

1、CHttpConnection:管理与HTTP服务器的连接。

2、CInternetSession.

3、CHttpFile:提供向HTTP服务器中请求和读取的功能。

要与一个HTTP服务器通讯,必须先构造一个CInternetSession的实例,然后构造一个CHttpConnection对象。不能直接构造一个CHttpConnection对象,而是调用CInternetSession::GetHttpConnection,创建CHttpConnection对象并返回其指针。

#include <afxinet.h>

eg.

if(AfxParseURL(URL,server_type,strServer,path,port))

{

return;

}

CInternetSession * m_inernetSession = new CinternetSession();

CHttpConnection * m_httpConnection =

m_inernetSession->GetHttpConnection(strServer, port,);

CHttpFile * m_httpfile = m_httpConnection ->OpenRequest();

//使用ChttpFile建立发送的Http报文

CString strHeadInfo = _T("");

// 发送Head请求

pHttpFile->SendRequest(strHeadInfo)

if (pHttpFile->QueryInfoStatusCode(dwStatusCode)

&& (dwStatusCode >= 200 && dwStatusCode < 300))

{

pHttpFile->QueryInfo(HTTP_QUERY_RAW_HEADERS_CRLF, strResponse);

}

else

{

return;

}

//对strResponse返回值解析

if (ParseResponse(strResponse))

{

return;

}

unsigned char bufRec[BUFF_SIZE] = {0};

UINT uReadSize = 0;

while (true)

{

ZeroMemory(bufRec, BUFF_SIZE);

uReadSize = pHttpFile->Read(bufRec, BUFF_SIZE);

if (uReadSize <= 0)

{

break;

}

tempFile.Write(bufRec, uReadSize);

}

MFCWinInet学习的更多相关文章

  1. 从直播编程到直播教育:LiveEdu.tv开启多元化的在线学习直播时代

    2015年9月,一个叫Livecoding.tv的网站在互联网上引起了编程界的注意.缘于Pingwest品玩的一位编辑在上网时无意中发现了这个网站,并写了一篇文章<一个比直播睡觉更奇怪的网站:直 ...

  2. Angular2学习笔记(1)

    Angular2学习笔记(1) 1. 写在前面 之前基于Electron写过一个Markdown编辑器.就其功能而言,主要功能已经实现,一些小的不影响使用的功能由于时间关系还没有完成:但就代码而言,之 ...

  3. ABP入门系列(1)——学习Abp框架之实操演练

    作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...

  4. 消息队列——RabbitMQ学习笔记

    消息队列--RabbitMQ学习笔记 1. 写在前面 昨天简单学习了一个消息队列项目--RabbitMQ,今天趁热打铁,将学到的东西记录下来. 学习的资料主要是官网给出的6个基本的消息发送/接收模型, ...

  5. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  6. Unity3d学习 制作地形

    这周学习了如何在unity中制作地形,就是在一个Terrain的对象上盖几座小山,在山底种几棵树,那就讲一下如何完成上述内容. 1.在新键得项目的游戏的Hierarchy目录中新键一个Terrain对 ...

  7. 《Django By Example》第四章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:祝大家新年快乐,这次带来<D ...

  8. 菜鸟Python学习笔记第一天:关于一些函数库的使用

    2017年1月3日 星期二 大一学习一门新的计算机语言真的很难,有时候连函数拼写出错查错都能查半天,没办法,谁让我英语太渣. 关于计算机语言的学习我想还是从C语言学习开始为好,Python有很多语言的 ...

  9. 多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类)

    前言:刚学习了一段机器学习,最近需要重构一个java项目,又赶过来看java.大多是线程代码,没办法,那时候总觉得多线程是个很难的部分很少用到,所以一直没下决定去啃,那些年留下的坑,总是得自己跳进去填 ...

随机推荐

  1. linux shell变量的截取

    变量的截断,经常用到的是${},##和%%几个特殊符号.假设我们定义了一个变量为:file=/dir1/dir2/dir3/my.file.txt ,可以用${ }分别替换得到不同的值: ${file ...

  2. ranger部署文档(记)

    目录 概览... 2 1.      ranger-admin. 2 2.      ranger-user-sync. 2 3.      ranger-*-plugins. 2 安装... 3 1 ...

  3. eventproxy 介绍这款好用的工具,前端事件式编程的思维

    前端事件式编程 <script src="eventproxy.js"></script> <script> // EventProxy此时是一 ...

  4. sql审核工具

    https://github.com/Meituan-Dianping/SQLAdvisor/blob/master/doc/QUICK_START.md

  5. None.js 第一步 开启一个服务 hello world

    引入 http 模块 var http = require('http'); 创建服务器 http.createServer(function (request, response) { // 发送一 ...

  6. [译]Domain Events Pattern Example

    原文 完整源码 本文展示的是一个关于网上调查的项目.想象下,当用户完成了一个调查,我们想通知所有人调查已经结束,分配一个人去检查调用问卷. 领域对象 public class Survey { pub ...

  7. 使用js代码将HTML Table导出为Excel

    使用js代码将HTML Table导出为Excel的方法: 直接上源码 <html> <head> <meta http-equiv="Content-Type ...

  8. 基于时间的 SQL注入研究

    SQL注入攻击是业界一种非常流行的攻击方式,是由rfp在1998年<Phrack>杂志第54期上的“NT Web Technology Vulnerabilities”文章中首次提出的.时 ...

  9. Ubuntu中安装NVIDIA显卡驱动

    1.参考: https://blog.csdn.net/xunan003/article/details/81665835 https://www.cnblogs.com/luofeel/p/8654 ...

  10. Coursera, Deep Learning 1, Neural Networks and Deep Learning - week4, Deep Neural Networks

    Deep Neural Network Getting your matrix dimention right 选hyper-pamameter 完全是凭经验 补充阅读: cost 函数的计算公式: ...