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. async+await处理异步问题

    在编写网页的时候我们常常会遇到异步问题,async+await是es6提出的解决异步的方法,下面我们来看看这个方法怎么实现解决异步的, 大家都知道,setTimeout是一个定时器.他是一个异步执行的 ...

  2. vue中slot插槽

    插槽就是vue实现的一套内容分发的API,将插槽元素作为承载分发内容的出口. 也就是说在组件模板中默认占用一个位置,当使用组件标签时候,组件标签的内容就会自动替换掉内容 slot中可以设置一些默认的内 ...

  3. 【转载】C++ getline函数用法

    https://www.cnblogs.com/xiaofeiIDO/p/8574042.html 摘要: 通过getline()函数一个小小的实例,那么把getline()函数作为while的判断语 ...

  4. springboot(二十):数据库连接池介绍

    概述 性能方面 hikariCP>druid>tomcat-jdbc>dbcp>c3p0 .hikariCP的高性能得益于最大限度的避免锁竞争. druid功能最为全面,sql ...

  5. luogu 4377 Talent show 01分数规划+背包dp

    01分数规划+背包dp 将分式下面的部分向右边挪过去,通过二分答案验证, 注意二分答案中如果验证的mid是int那么l=mid+1,r=mid-1,double类型中r=mid,l=mid; 背包dp ...

  6. springboot04-mongodb

    1.搭建mongodb服务 在https://www.mongodb.com/下载mongodb安装包,解压到本地 cmd中执行命令,启动本地mongodb: cd D:\Program Files\ ...

  7. mysql 单表更新记录UPDATE

    1.单表更新 (1)mysql> SELECT * FROM users;+----+----------+----------+-----+------+| id   | username | ...

  8. excel数据 入库mysql 和 mysql数据 导入excel文件

    1.excel数据入库mysql 首先准备excel文件, 标红的地方需要留意,一个是字段名所在行,一个表名对应页: 然后私用mysql工具 navicat, 选择数据库,然后导入文件, 选中相应ex ...

  9. RNN

    在DNN中,当前输出层的值只和当前输入值有关系.如果当前输出值不仅依赖当前输入值,也依赖于前面时刻的输入值,那么DNN就不适用了.因此也就有了RNN. 一.RNN结构 这是最简单的RNN.其中Xt是t ...

  10. APPLE-SA-2019-3-25-3 tvOS 12.2

    APPLE-SA-2019-3-25-3 tvOS 12.2 tvOS 12.2 is now available and addresses the following: CFStringAvail ...