zoukankan      html  css  js  c++  java
  • 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);

    }

  • 相关阅读:
    Centos7搭建OpenNebula云平台
    Python中__new__和__init__的区别与联系
    16个python常用魔法函数
    微信小程序< 1 > ~ Hello 微信小程序
    扬帆起航,再踏征程(一)
    Java 社区平台
    Java 社区平台
    <Android 应用 之路> 一个类似今日头条的APP
    使用标准C读取文件遇到的结构体对齐问题及其解决办法
    编译64位cu文件的设置
  • 原文地址:https://www.cnblogs.com/liaocheng/p/4243548.html
Copyright © 2011-2022 走看看