#include <iostream>
#include <boost/asio.hpp>
#include <boost/config/compiler/visualc.hpp>
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/json_parser.hpp>
#include <boost/foreach.hpp>
#include <boost/filesystem.hpp>
#include <boost/filesystem/fstream.hpp>
#include <boost/iostreams/device/mapped_file.hpp>
#include <cassert>
#include <exception>
#include <sstream>
#include <string>
#include <boost/thread.hpp> void test_http()
{
using namespace boost::asio;
ip::tcp::iostream stream; stream.expires_from_now(boost::posix_time::seconds());
stream.connect("www.boost.org", "http");
stream << "GET /LICENSE_1_0.txt HTTP/1.0\r\n";
stream << "Host: www.boost.org\r\n";
stream << "Accept: */*\r\n";
stream << "Connection: close\r\n\r\n"; stream.flush();
std::cout << stream.rdbuf();
} void udp_echo_client()
{ using boost::asio::ip::udp;
boost::asio::io_service my_io_service;
udp::socket s(my_io_service, udp::endpoint(udp::v4(), )); udp::resolver resolver(my_io_service);
} int read_file_content(std::string fileName, std::stringstream& ss)
{
namespace fs = boost::filesystem;
fs::path file(fileName);
if (!fs::exists(file))
{
std::cerr << "file does not exist." << std::endl;
return EXIT_FAILURE;
} //std::ifstream t(file) >> ss;
fs::ifstream t(file);
ss << t.rdbuf();
// boost::iostreams::mapped_file mf(file);
// mf.data() >> ss; return EXIT_SUCCESS;
} void print_json_data(boost::property_tree::ptree const& pt)
{
using boost::property_tree::ptree;
ptree::const_iterator end = pt.end();
for (ptree::const_iterator it = pt.begin(); it != end; it++)
{
std::cout << it->first << ": " << it->second.get_value<std::string>() << std::endl;
print_json_data(it->second);
}
} int parse_json_data()
{
try
{
std::stringstream ss; read_file_content("data.json",ss);
//ss << "{ \"root\": { \"values\": [1, 2, 3, 4, 5 ] } }"; std::cout << ss.str() << std::endl; boost::property_tree::ptree pt;
boost::property_tree::read_json(ss, pt); BOOST_FOREACH(boost::property_tree::ptree::value_type& v, pt.get_child("editorialMarket"))
{
assert(v.first.empty());
std::cout << v.second.data() << std::endl;
} print_json_data(pt);
}
catch (std::exception& e)
{
std::cerr << "error: " << e.what() << std::endl;
} return EXIT_SUCCESS;
} /*
函数 main() 首先定义了一个 I/O 服务 io_service,用于初始化 I/O 对象 timer。
就象 boost::asio::deadline_timer 那样,所有 I/O 对象通常都需要一个 I/O 服务作为它们的构造函数的第一个参数。
由于 timer 的作用类似于一个闹钟,所以 boost::asio::deadline_timer 的构造函数可以传入第二个参数,
用于表示在某个时间点或是在某段时长之后闹钟停止。 以上例子指定了五秒的时长,该闹钟在 timer 被定义之后立即开始计时
*/ void handler1(const boost::system::error_code& ec)
{
std::cout << "5 s" << std::endl;
for (int i = ; i < ; i++)
{
printf("%s: %d\n",__FUNCTION__, i);
boost::this_thread::sleep(boost::posix_time::seconds());
}
} void handler2(const boost::system::error_code& ec)
{
std::cout << "5 s" << std::endl;
for (int i = ; i < ;i++)
{
printf("%s: %d\n", __FUNCTION__, i);
boost::this_thread::sleep(boost::posix_time::seconds());
}
} boost::asio::io_service io_service1;
boost::asio::io_service io_service2;
void run1()
{
printf("in %s\n", __FUNCTION__);
io_service1.run();
} void run2()
{
printf("in %s\n", __FUNCTION__);
io_service2.run();
} void test_io_srv()
{
//boost::asio::io_service io_service;
//创建5s定时器
boost::asio::deadline_timer timer1(io_service1, boost::posix_time::seconds());
timer1.async_wait(handler1); //创建5s定时器
boost::asio::deadline_timer timer2(io_service2, boost::posix_time::seconds());
timer2.async_wait(handler2); //io_service.run();
boost::thread thread1(run1);
boost::thread thread2(run2); thread1.join();
thread2.join();
} int main()
{
//parse_json_data();
test_io_srv();
std::cout << "test_io_srv..." << std::endl;
}

Boost C++: 网络编程1的更多相关文章

  1. boost Asio网络编程简介

    :first-child { margin-top: 0px; } .markdown-preview:not([data-use-github-style]) h1, .markdown-previ ...

  2. Boost.Asio 网络编程([译]Boost.Asio基本原理)

    转自:https://m.w3cschool.cn/nlzbw/nlzbw-3vs825ya.html Boost.Asio基本原理 这一章涵盖了使用Boost.Asio时必须知道的一些事情.我们也将 ...

  3. [Boost基础]并发编程——asio网络库——定时器deadline_timer

    asio库基于操作系统提供的异步机制,采用前摄器设计模式(Proactor)实现了可移植的异步(或者同步)IO操作,而且并不要求使用多线程和锁定,有些的避免了多线程编程带来的诸多有害副作用(如条件竞争 ...

  4. Boost.Asio c++ 网络编程翻译(26)

    Boost.Asio-其他特性 这章我们讲了解一些Boost.Asio不那么为人所知的特性.标准的stream和streambuf对象有时候会更难用一些,但正如你所见.它们也有它们的益处.最后,你会看 ...

  5. 有哪些适合学生参与的 C++,网络编程方面的开源项目?

    有哪些适合学生参与的 C++,网络编程方面的开源项目?   Tinyhttpd是一个超轻量型Http Server,使用C语言开发,全部代码只有502行(包括注释),附带一个简单的Client,可以通 ...

  6. Muduo 网络编程示例之零:前言

    陈硕 (giantchen_AT_gmail)Blog.csdn.net/Solstice Muduo 全系列文章列表: http://blog.csdn.net/Solstice/category/ ...

  7. 基于ASIO的协程与网络编程

    协程 协程,即协作式程序,其思想是,一系列互相依赖的协程间依次使用CPU,每次只有一个协程工作,而其他协程处于休眠状态.协程可以在运行期间的某个点上暂停执行,并在恢复运行时从暂停的点上继续执行. 协程 ...

  8. 使用juggle简化网络编程

    常规的网络编程,在消息处理上大概会采用如下方式 struct msg{ int msg_id; int msg_len; //...msg_info }; 定义如上的消息结构 接收方接收后,按如上的消 ...

  9. Socket网络编程--Libev库学习(1)

    这一节是安装篇. Socket网络编程不知不觉已经学了快两个月了.现在是时候找个网络库学学了.搜索了很多关于如何学网络编程的博客和问答.大致都是推荐学一个网络库,至于C++网络库有那么几个,各有各的好 ...

随机推荐

  1. NYOJ16 矩形嵌套(DAG最长路)

    矩形嵌套 紫书P262 这是有向无环图DAG(Directed Acyclic Graph)上的动态规划,是DAG最长路问题 [题目链接]NYOJ16-矩形嵌套 [题目类型]DAG上的dp & ...

  2. HTML document对象(2)

    五.相关元素操作: var a = document.getElementById("id");找到a: var b = a.nextSibling,找a的下一个同辈元素,注意包含 ...

  3. Hololens开发笔记之Gesture手势识别(基本介绍)

    手势识别是HoloLens交互的重要输入方法之一.HoloLens提供了底层API和高层API,可以满足不同的手势定制需求.底层API能够获取手的位置和速度信息,高层API则借助手势识别器来识别预设的 ...

  4. 在VMware虚拟机中配置DOS汇编开发环境!!

    操作系统:win7 32位 DOS环境:DosBox  下载:http://www.dosbox.com/ 选择当前适合自己版本,下载就可以了. 汇编编译器:MASM 5.0 下载:http://do ...

  5. oracle游标循环的嵌套

    完成批量修改user_tables中的所有表的栏位名(从MS SQL导入过来,发现大小写问题,造成很多麻烦) 存储过程见下: -- Created on 2012/3/14 by FREE decla ...

  6. 解决Ubuntu不能挂载ntfs格式硬盘

    以前都是自动可以挂在NTFS硬盘的,可是现在不能挂载了.搜了一下 这里有办法 http://forum.ubuntu.org.cn/viewtopic.php?t=313930 例如你是 Error ...

  7. 计算机硬件——pci卡图片

    搞IT的还是软硬都要了解的好.1. PCI插槽 2. PCI-E 3. PCI-X 4. mini PCI  

  8. 服务器压力测试 ab

    1.ab命令原理 Apache自带的ab命令模拟多线程并发请求,测试服务器负载压力,也可以测试nginx.lighthttp.IIS等其它Web服务器的压力(测试其它服务器时需单独下载ab压力测试工具 ...

  9. Html5中的跨页面消息传输

    1.如果要接受从其他的窗口那里发过来的消息,就必须对窗口对象的message事件进行监控. window.addEventListener("message",function() ...

  10. .NET 集合操作性能

    如果单元格的内容是na(not applicatable),就表示这个操作不能应用于这种集合类型.