资源简介
CURL C++封装,功能包括:HTTP\HTTPS、POST、GET、表单提交、文件下载、UTF-8转码、说明文档
代码片段和文件信息
// Clib_network.cpp : 定义 DLL 应用程序的导出函数。
//
#include “stdafx.h“
#include “Clib_network.h“
#include “curl.h“
#include “easy.h“
#pragma comment(lib“curllib.lib“)
#pragma comment(lib“curllib_static.lib“)
/*
* https://curl.haxx.se/libcurl/c/
*
* curl_global_init 初始化libcurl在多线程下主动调用,防止在线程中curl_easy_init时多次调用
* curl_global_cleanup 对curl_global_init做的工作清理
* curl_easy_init 初始化一个CURL的指针,意味着一个会话的开始
* curl_easy_setopt 设置传输选项
* curl_easy_perform 函数完成传输任务
* curl_easy_cleanup 释放内存
*
*
* curl_easy_setopt 参数大致说明:
*
* CURLOPT_URL 设置URL
* CURLOPT_WRITEFUNCTION 设置写函数,liburl接收到数据后被调用
* CURLOPT_WRITEDATA 写函数中stream指针的来源
* CURLOPT_READFUNCTION 这是读函数,liburl需要读取数据传递给远程主机
* CURLOPT_READDATA 读函数中stream指针的来源
* CURLOPT_PROGRESSFUNCTION 下载进度,每秒被libcurl调用一次,CURLOPT_NOPROGRESS必须设置false
* CURLOPT_PROGRESSDATA 参数将作为CURLOPT_PROGRESSFUNCTION指定函数的第一个参数
*
* CURLOPT_CONNECTIONTIMEOUT 设置连接等待时间,不设置默认无限等等
* CURLOPT_TIMEOUT 设置传输时间,不设置默认无限等等
*
* CURLOPT_FOLLOWLOCATION 设置重定位URL
*
*
* curl_formadd 增加网页表单
* curl_formfree 释放网页表单
*
* CURLFORM_COPYNAME 表单项名称
* CURLFORM_FILE 表单项为文件 后跟文件路径
* CURLFORM_COPYCONTENTS 表单项为文本 后跟文本内容
* CURLFORM_END 表单项结束
*
*
* 注:绝对不应该在线程之间共享同一个libcurl handle,一个线程每次只能使用一个handle
* libcurl是线程安全的,但有两点例外:信号(signals)和SSL/TLS handler
*/
namespace _CURL_
{
static size_t write_data(void *buf size_t unit size_t bufSize std::string * data)
{
if (data != NULL)
{
int size = unit * bufSize;
char * tmp = (char*)malloc(size + 1);
memcpy(tmp buf size);
tmp[size] = ‘\0‘;
data->append(tmp);
free(tmp);
return size;
}
else
return 0;
}
static size_t write_file(void *buf size_t unit size_t bufSize void * data)
{
Clib_network* pthis = (Clib_network*)data;
if (pthis != NULL)
{
if(pthis->m_bStop) // 使下载停止
return 0;
int size = unit * bufSize;
DWORD dwWritten = 0;
if (!WriteFile(pthis->m_hFile buf size &dwWritten NULL))
return 0;
return size;
}
else
return 0;
}
#define SEP “\t“ /* Tab separates the fields */
char *my_cookie =
“example.com“ /* Hostname */
SEP “FALSE“ /* Include subdomains */
SEP “/“ /* Path */
SEP “FALSE“ /* Secure */
SEP “0“ /* Expiry in epoch time format. 0 == Session */
SEP “foo“ /* Name */
SEP “bar“; /* Value */
class CurlIntelligence
{
public:
CurlIntelligence()
{
curl_global_init(CURL_GLOBAL_ALL); //唯一只被调用一次,初始化所有的可能的调用
}
~CurlIntelligence()
{
curl_global_cleanup();
}
};
}
_CURL_::CurlIntelligence g_curl;
Clib_network::Clib_network()
:m_pCallbackParam(NULL)
m_pCallback(NULL)
m_bStop(false)
m_hFile(NULL)
{
return;
}
Clib_network::~Clib_network()
{
return;
}
std::string Clib_network::GetError(int nCode)
{
std::string strErr = ““;
if (nCode == -1)
strErr = “Curllib handle is NULL“;
else
strErr = curl_easy_st
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2017-08-02 17:37 curl\
目录 0 2017-08-02 17:37 curl\Clib_network\
文件 14204 2017-07-27 15:41 curl\Clib_network\Clib_network.cpp
文件 3911 2017-07-27 15:10 curl\Clib_network\Clib_network.h
文件 5327 2017-07-26 11:32 curl\Clib_network\Clib_network.vcxproj
文件 1501 2017-07-26 11:17 curl\Clib_network\Clib_network.vcxproj.filters
文件 143 2017-07-26 11:17 curl\Clib_network\Clib_network.vcxproj.user
文件 1566 2017-07-26 11:17 curl\Clib_network\ReadMe.txt
文件 389 2017-07-26 11:17 curl\Clib_network\dllmain.cpp
文件 217 2017-07-26 11:17 curl\Clib_network\stdafx.cpp
文件 318 2017-07-26 11:17 curl\Clib_network\stdafx.h
文件 236 2017-07-26 11:17 curl\Clib_network\targetver.h
目录 0 2017-08-02 17:37 curl\curl\
目录 0 2017-08-02 17:37 curl\curl\include\
文件 85577 2017-05-31 02:07 curl\curl\include\curl.h
文件 22273 2017-05-31 02:07 curl\curl\include\curlbuild.h
文件 8934 2017-05-31 02:07 curl\curl\include\curlrules.h
文件 2741 2017-05-31 02:07 curl\curl\include\curlver.h
文件 3472 2017-05-31 02:07 curl\curl\include\easy.h
文件 2788 2017-05-31 02:07 curl\curl\include\mprintf.h
文件 14813 2017-05-31 02:07 curl\curl\include\multi.h
文件 1330 2017-05-31 02:07 curl\curl\include\stdcheaders.h
文件 37318 2017-05-31 02:07 curl\curl\include\typecheck-gcc.h
目录 0 2017-08-02 17:37 curl\curl\lib\
目录 0 2017-08-02 17:37 curl\curl\lib\Debug\
文件 304640 2017-04-26 09:35 curl\curl\lib\Debug\curllib.dll
文件 13694 2017-04-26 09:35 curl\curl\lib\Debug\curllib.lib
文件 1774420 2017-04-26 09:35 curl\curl\lib\Debug\curllib_static.lib
文件 214528 2017-04-26 09:35 curl\curl\lib\Debug\libsasl.dll
文件 110592 2017-04-26 09:35 curl\curl\lib\Debug\openldap.dll
文件 23142 2017-04-26 09:35 curl\curl\lib\Debug\qiniu.lib
............此处省略13个文件信息
相关资源
- c++ 多功能计算器
- C++17 In Detail
- 嵌入式QtC++编程课件
- 颜色识别形状识别STM103嵌入式代码
- c++ 邮件多附件群发
- c++ 透明代理(hookproxy)
- mfc 调用redis
- FTP客户端源码(c++)
- c++ 画图(14Qt-XPS)
- c++多边形交并差运算
- VC++基于OpenGL模拟的一个3维空间模型
- c++ 虚拟摄像头
- hook,捕获所有案件,查找所有窗口,
- C语言课设计算器
- c++ 简易贪吃蛇源码
- 高精度加法(c++代码)
- C++调用百度地图案例
- 北京化工大学计算方法(C/C++)讲义
- 基于VC++的SolidWorks二次开发SolidWorks
- c++ 模拟鼠标按键
- OFD编辑器
- Beginning C++17 From Novice to Professional
- C++ STL实现
- opencv手部轮廓识别以及轨迹识别
- 百度C++编码规范
- C++ sql2008 WebServer通讯.docx
- c++ 定时关机程序源码
- 基于VSCode和CMake实现C++开发
- c++语法查询工具
- c++ 账务系统源码
评论
共有 条评论