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);

    }

  • 相关阅读:
    docker查看位置和占用大小
    Edgex设置日志文件时区
    VC6.0 MFC Unhandled exception in ***.exe(OLE32.DLL):0xC0000005:Access Violation
    QEMU树莓派下配置及安装软件-3
    windows下QEMU扩展树莓派分区大小-2
    windows下QEMU安装树莓派-1
    golang 升级 1.16.5 之后,编译报错 missing go.sum entry for module providing package
    linux 下 go安装问题
    EdgeX armhf编译问题
    一个SPI从机收到的前三个字节一直为0的问题
  • 原文地址:https://www.cnblogs.com/liaocheng/p/4243548.html
Copyright © 2011-2022 走看看