同步操作将从 Alm/async_curl 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
使用libcurl实现的异步 http/https 其它协议可自行添加
依赖libcurl至少7.66.0的版本,目前Windows和linux编译的是7.67.0的版本
linux:
升级libcurl至少到7.66的版本
cd到async_curl/build/linux目录下
make编译生成libasync_curl.so库,make test编译生成测试文件
运行./testexe测试用例
windows:
可以直接使用git中上传的libcurl该版本为7.67.0以动态库链接的方式(c/c++用的md/mdd编译)
直接打开async_curl/build/windows下的项目工程文件
编译生成相关库文件,依赖的库在async_curl/libcurl/lib/win目录下
引用头文件async_curl/include
引用库libasync_curl.so
测试用例sync_curl/testcpp/test.cpp
struct MyCallBack: public CurlCallBack { virtual int operator() (MsgPack* pack) { HttpMsgPack* http_pack = dynamic_cast<HttpMsgPack*>(pack);
if (http_pack->_errMsg.empty())
{
// 输出到文件
string filename = "out_" + to_string(pack->_msgid) + ".txt";
fstream o(filename, ios::in | ios::out | ios::trunc);
o << http_pack->_rspData;
o.close();
// 输出到屏幕
cout << http_pack->_rspData;
}
else
{
cout << "error:" << http_pack->_errMsg;
}
return 0;
}
};
int main() { // 配置 HttpConfig config; config._timeout = 30;
// 服务
Server* server = Server::CreateHttp(WriteLogConsole);
// 初始化
server->Init(&config);
MyCallBack mycallback;
server->SetCallBack(&mycallback);
thread thr(std::bind(&Server::Run, server));
/*
投递消息:
默认投递get方法,目前不加任何头部字段信息;
只加了一个Content-Type:application/x-www-form-urlencoded;charset=UTF-8,
改头部信息由pack._format = HttpContextFormat::URLENCODED指定
*/
int numcount = 100;
while (--numcount > 0)
{
HttpMsgPack pack;
pack._format = HttpContextFormat::URLENCODED;
pack._url = "www.baidu.com";
server->PostPack(&pack);
this_thread::sleep_for(chrono::seconds(2));
}
thr.join();
return 0;
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。