MFCWinInet学习
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学习的更多相关文章
- 从直播编程到直播教育:LiveEdu.tv开启多元化的在线学习直播时代
2015年9月,一个叫Livecoding.tv的网站在互联网上引起了编程界的注意.缘于Pingwest品玩的一位编辑在上网时无意中发现了这个网站,并写了一篇文章<一个比直播睡觉更奇怪的网站:直 ...
- Angular2学习笔记(1)
Angular2学习笔记(1) 1. 写在前面 之前基于Electron写过一个Markdown编辑器.就其功能而言,主要功能已经实现,一些小的不影响使用的功能由于时间关系还没有完成:但就代码而言,之 ...
- ABP入门系列(1)——学习Abp框架之实操演练
作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...
- 消息队列——RabbitMQ学习笔记
消息队列--RabbitMQ学习笔记 1. 写在前面 昨天简单学习了一个消息队列项目--RabbitMQ,今天趁热打铁,将学到的东西记录下来. 学习的资料主要是官网给出的6个基本的消息发送/接收模型, ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- Unity3d学习 制作地形
这周学习了如何在unity中制作地形,就是在一个Terrain的对象上盖几座小山,在山底种几棵树,那就讲一下如何完成上述内容. 1.在新键得项目的游戏的Hierarchy目录中新键一个Terrain对 ...
- 《Django By Example》第四章 中文 翻译 (个人学习,渣翻)
书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:祝大家新年快乐,这次带来<D ...
- 菜鸟Python学习笔记第一天:关于一些函数库的使用
2017年1月3日 星期二 大一学习一门新的计算机语言真的很难,有时候连函数拼写出错查错都能查半天,没办法,谁让我英语太渣. 关于计算机语言的学习我想还是从C语言学习开始为好,Python有很多语言的 ...
- 多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类)
前言:刚学习了一段机器学习,最近需要重构一个java项目,又赶过来看java.大多是线程代码,没办法,那时候总觉得多线程是个很难的部分很少用到,所以一直没下决定去啃,那些年留下的坑,总是得自己跳进去填 ...
随机推荐
- linux shell变量的截取
变量的截断,经常用到的是${},##和%%几个特殊符号.假设我们定义了一个变量为:file=/dir1/dir2/dir3/my.file.txt ,可以用${ }分别替换得到不同的值: ${file ...
- ranger部署文档(记)
目录 概览... 2 1. ranger-admin. 2 2. ranger-user-sync. 2 3. ranger-*-plugins. 2 安装... 3 1 ...
- eventproxy 介绍这款好用的工具,前端事件式编程的思维
前端事件式编程 <script src="eventproxy.js"></script> <script> // EventProxy此时是一 ...
- sql审核工具
https://github.com/Meituan-Dianping/SQLAdvisor/blob/master/doc/QUICK_START.md
- None.js 第一步 开启一个服务 hello world
引入 http 模块 var http = require('http'); 创建服务器 http.createServer(function (request, response) { // 发送一 ...
- [译]Domain Events Pattern Example
原文 完整源码 本文展示的是一个关于网上调查的项目.想象下,当用户完成了一个调查,我们想通知所有人调查已经结束,分配一个人去检查调用问卷. 领域对象 public class Survey { pub ...
- 使用js代码将HTML Table导出为Excel
使用js代码将HTML Table导出为Excel的方法: 直接上源码 <html> <head> <meta http-equiv="Content-Type ...
- 基于时间的 SQL注入研究
SQL注入攻击是业界一种非常流行的攻击方式,是由rfp在1998年<Phrack>杂志第54期上的“NT Web Technology Vulnerabilities”文章中首次提出的.时 ...
- Ubuntu中安装NVIDIA显卡驱动
1.参考: https://blog.csdn.net/xunan003/article/details/81665835 https://www.cnblogs.com/luofeel/p/8654 ...
- Coursera, Deep Learning 1, Neural Networks and Deep Learning - week4, Deep Neural Networks
Deep Neural Network Getting your matrix dimention right 选hyper-pamameter 完全是凭经验 补充阅读: cost 函数的计算公式: ...