avhttp是一个基于Boost.Asio实现的HTTP客户端开发工具库.
它支持HTTP(1.0/1.1)、HTTPS, 断点续传, 多线程并发下载, 异步, HTTP/SOCKS4/SOCKS5代理支持等特性, 开发者可以轻松的基于这个库开发其他相关应用.
#include <iostream> #include <boost/array.hpp> #include "avhttp.hpp" int main() { boost::asio::io_service io; avhttp::http_stream h(io); boost::system::error_code ec; // 打开url. h.open("http://www.boost.org/LICENSE_1_0.txt", ec); if (ec) { // 打开失败处理... std::cout << "Error: " << ec.message() << std::endl; return -1; } boost::array<char, 1024> buf; // 循环读取数据. while (!ec) { std::size_t bytes_transferred = h.read_some(boost::asio::buffer(buf), ec); // 将下载的数据打印到屏幕. std::cout.write(buf.data(), bytes_transferred); } std::cout.flush(); h.close(ec); // 关闭. io.run(); return 0; }
boost::asio::io_service io; avhttp::http_stream h(io); avhttp::request_opts opt; // 可以insert多个选项. opt.insert("Connection", "Keep-Alive"); // 在这里设置到request_options. h.request_options(opt); // 然后再发起其它相关操作. h.open("http://www.boost.org/LICENSE_1_0.txt"); // ...
avhttp::request_opts 在发起HTTP请求之前的设定HTTP选项, 它可以实现让您定制自己的http header.
boost::asio::io_service io; avhttp::http_stream h(io); avhttp::proxy_settings p; // 这里可以设置3种代理, socks4/socks5/http, 具体可以查看avhttp::proxy_settings的声明. p.type = avhttp::proxy_settings::http; p.hostname = "127.0.0.1"; p.port = 8080; h.proxy(p); // 设置代理. // 然后再发起其它相关操作. h.open("http://www.boost.org/LICENSE_1_0.txt"); // ...
起源 问题起源于 microcai 和 jack 的一次谈话。他们注意到了 HTTP 多线程下载模式,其实本质上不过是向服务器发起了多个TCP连接。使用一个线程一样能完成这样的工作——只要他们使用的是异步方式进行的。boost.asio 是一个非常优秀的异步网络库,要是能基于 asio 开发,就能实现单线程并发下载。得益于asio的良好架构,如果单线程性能不足的时候,只需要简单的开启多个线程跑 a
一个支持并发, 支持异步/同步, 支持http/https, 支持续传的avhttp库 http://my.oschina.net/jackwgm/blog/110105
avhttp终于支持了gzip/chunked http://my.oschina.net/jackwgm/blog/128313
概述 ThinkCMF已经默认开启了多语言的支持,后台以语言包形式实现多语言,前台以语言包和多模板的形式实现多语言. 语言包 ThinkCMF开启的语言有三个,分别是zh-cn,en-us,zh-tw,此项配置在application/Common/Conf/config.php配置文件下,可以通过更改LANG_LIST的值增加语言. 语言包分为框架核心语言包(在simplewind/Core/L
范式 声明式 函数式 Common Lisp Clojure Haskell Erlang Scala LISP Logo F# 逻辑式 Prolog 命令式 非结构化 COBOL 结构化 面向对象 Visual Basic Objective-C Smalltalk Python Ruby Eiffel Java C++ C# 过程式 Delphi/Object Pascal Fortran B
几个月前,我决定开发一个可以真正使用的编程语言。语言的目标是这样的: 可以和C一样编译成 native 机器码,并能用于游戏开发。 语言和java/C# 类似,并且尽量减少业务代码开发的复杂度。 兼容全平台、开源。 国产、全中文支持。 有完整的 IDE、文档、工具支持。 有一个社区支持。 这是一个很伟大的事情,如果你有兴趣和时间,欢迎加入我们的开源团队。 不会做没关系,这是一个学习机会。 联系方式
主要内容:使用DartPad在线执行脚本,设置本地环境,IDE支持,dart2js工具本章讨论在Windows平台上为Dart设置执行环境。 使用DartPad在线执行脚本 可以使用 https://dartpad.dartlang.org/ 上的在线编辑器在线运行测试脚本。Dart编辑器执行脚本并显示HTML和控制台输出。在线编辑器附带一组预设代码示例。 Dartpad编辑器的截图如下 - Dartpad还可以以更严格的方式进行编码。通过检查编辑器右下角的强模式选项来实现。强模式
LiteIDE LiteIDE是一款开源、跨平台的轻量级Go语言集成开发环境(IDE)。 支持的操作系统 Windows x86 (32-bit or 64-bit) Linux x86 (32-bit or 64-bit) 下载地址 :http://sourceforge.net/projects/liteide/files/ 源码地址 :https://github.com/visualfc/
9.3* Perl 语言接口开发 本节将专门讲一讲 if_perl 接口的开发指导与实践经验,虽然只讲 perl ,但其基本 思路对于其他语言接口也可互为参照。 9.3.1 VimL 调用 perl 接口的基本流程 典型地,假如要使用(perl)语言接口实现某个较为复杂的功能或插件,其调用流程大概 可归纳如下: 定义快捷键映射,nnoremap ,这不一定必要,可能直接使用命令也方便; 快捷键调用
一.关于易语言DLL 从易语言3.6版开始,已经能够支持对DLL动态链接库的开发, 编译出的DLL是标准的DLL,和其他编程语言生成的标准DLL的调用方法相同。易语言编写出的DLL,在非独立编译exe时只需要DLL文件随应用程序一起发行,而独立编译exe时无需将DLL文件随应用程序一起发行。 二.新建易语言DLL程序 新建一个易语言程序,然后选择 图标,易语言就会自动创建 出编写DLL动态链接
为什么开发 Tea 语言 现在语言很多,我来一一解释下为什么我不喜欢这些语言而要自己开发: Python/Ruby/NodeJs: 它们很简单,写起来确实比较“爽”,写写小工具很适合。但我不喜欢它们,理由有二: a. 我需要做功能完整的产品,而不是写小工具。因此脚本语言是不可以的:它无法保护源码。 b. 我希望语言能有强大的 IDE,不要让我背一大堆 API,我只能记住首字母。 Java Java