`
amornio19840908
  • 浏览: 56808 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

C++ boost asio 学习(一)

    博客分类:
  • C++
阅读更多
跟着 http://www.boost.org/doc/libs/1_53_0/doc/html/boost_asio/tutorial.html 学习asio。


编译的时候需要加上 -lboost_system

同步定时器例子

#include <iostream>
#include <boost/asio.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>

using namespace std;

void tuttimer1()
{
	boost::asio::io_service io;

	// 等待5秒
	boost::asio::deadline_timer t(io, boost::posix_time::seconds(5));

	t.wait();
}


int main() {
	tuttimer1();
	cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!

	return 0;
}


异步定时器例子
#include <iostream>
#include <boost/asio.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>

// 定义回调函数,asio库要求回调函数只能有一个参数,且为 const boost::system::error_code & 类型
void print(const boost::system::error_code& /*e*/) {
	cout << "This is asynchronous timer!" << endl;
}

void tuttimer2()
{
	boost::asio::io_service io;
	boost::asio::deadline_timer t(io, boost::posix_time::seconds(5));

	cout << "asynchronous timer start!" << endl;
	t.async_wait(&print); // 异步等待,传入回调函数,立即返回
	cout << "asynchronous timer processing!" << endl;

	io.run(); // 很重要!异步IO必须。如果不调用run(),
	          // 虽然操作被异步执行了,但没有一个等待它完成的机制,回调函数将得不到执行机会。
	cout << "asynchronous timer end!" << endl;
}

int main() {
	tuttimer2();
	return 0;
}

/*
运行结果:
asynchronous timer start!
asynchronous timer processing!
This is asynchronous timer!
asynchronous timer end!
*/


异步定时器使用bind
#include <iostream>
#include <boost/asio.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>
#include <boost/bind.hpp>

void print1(const boost::system::error_code& /*e*/,
		boost::asio::deadline_timer* t, int* count)
{
	if (*count < 5)
	{
		cout << *count << "\n" << endl;
		++(*count);

		t->expires_at(t->expires_at() + boost::posix_time::seconds(1));

		t->async_wait(boost::bind(print1, boost::asio::placeholders::error, t, count));
	}

}

void tuttimer3()
{
	boost::asio::io_service io;
	int count = 0;
	boost::asio::deadline_timer t(io, boost::posix_time::seconds(1));

	t.async_wait(boost::bind(print1, boost::asio::placeholders::error, &t, &count));

	io.run();

	cout << "Final count is " << count << "\n" << endl;
}

int main() {
	tuttimer3();
	return 0;
}
/*
运行结果:
0

1

2

3

4

Final count is 5
*/
分享到:
评论

相关推荐

    c++ boost asio http get post请求

    在C++编程中,Boost库是一个非常重要的工具集,它为C++标准库提供了许多扩展功能,其中包括Boost.Asio库。Boost.Asio是用于网络编程的模块,它提供了低级和高级的网络通信接口,包括TCP、UDP、套接字以及HTTP等协议...

    Boost ASIO C++ 网络编程 中文版 带全书所有例子代码

    Boost ASIO 是一个用于编写异步网络应用程序的库,它为C++开发者提供了强大而灵活的工具。这本书《Boost.Asio C++ Network Programming》中文版,结合了完整的源代码,是深入理解和实践ASIO的理想资源。书中涵盖了一...

    c++ boost asio网络库 异步tcp方式文件传输 速度在10M左右.zip

    C++ Boost ASIO库是C++开发者用于网络编程的一个强大工具,它提供了高效、灵活的异步I/O操作。在TCP(传输控制协议)网络通信中,Boost.ASIO允许开发人员实现高效的文件传输,尤其是在大数据量的情况下。在这个场景...

    基于boost.asio库的C++http/https web server

    总的来说,基于Boost.ASIO的C++ Web服务器是一个涉及到网络编程、异步I/O、HTTP/HTTPS协议理解和多线程技术的综合性项目。它不仅展示了C++的强大能力,也体现了Boost库在简化复杂任务上的价值。通过深入研究这个项目...

    C++ Boost Asio 网络库 讲解示例代码

    C++ Boost Asio 是一个强大的网络编程库,它为C++开发者提供了低级网络操作的高级接口,包括处理TCP、UDP、套接字、多路复用器等。Asio的设计理念是异步非阻塞,这使得它在处理并发连接和高吞吐量时非常高效。下面将...

    Boost.Asio C++ 网络编程.pdf

    Boost.Asio是Boost库的一部分,它为C++程序员提供了低级和高级的网络API,使得开发高效、可扩展的网络应用程序变得简单。这本书详细介绍了如何使用Boost.Asio进行网络编程,涵盖了从基本概念到高级特性的全面内容。 ...

    Boost ASIO C++ 网络编程

    Boost ASIO是C++库中的一个强大工具,用于进行异步网络编程。它提供了一种统一的接口,可以处理各种I/O操作,包括TCP、UDP、套接字、多路复用、本地进程通信等。在C++网络编程中,Boost ASIO是一个不可或缺的组件,...

    Boost.Asio C++ Network Programming_Network_C++_ASIO_boost.asio_B

    《Boost.Asio C++ Network Programming》是一本深入探讨C++网络编程的专著,主要聚焦于Boost.Asio库的应用。Boost.Asio是C++标准库的一个强大补充,它提供了低级网络I/O操作的跨平台接口,使得开发者可以轻松地进行...

    Boost ASIO C++ 网络编程-带实例

    10. **学习资源**:"Boost ASIO C++ 网络编程 中文版(实例不完整).pdf"可能是该主题的一个教程或指南,可以帮助初学者快速上手Boost ASIO,了解如何利用其功能进行网络编程。 通过深入学习和实践Boost ASIO,...

    Boost.Asio C++ Network Programming(高清,带书签,可复制)

    《Boost.Asio C++ Network Programming》是一本深入探讨C++网络编程的专业书籍,主要...通过学习这本书,你可以掌握使用Boost.Asio库构建高效、可靠的网络应用程序的方法,为你的C++职业生涯增添一项重要的技术武器。

    boost-asio-cpp-network-programming.zip_BOOST教程_Boost_boost asio

    Boost.Asio是Boost库的一部分,专为C++设计,用于处理I/O操作,如网络通信。这个库提供了低级和高级的接口,使得开发者能够高效地编写并发网络应用程序。Boost.Asio的核心在于其异步模型,它支持多种协议,包括TCP、...

    Boost.Asio C++ 网络编程 中文版

    ### Boost.Asio C++ 网络编程知识点 ...这本书是由C++专家John Torjo编写,提供了对Boost.Asio库的深入介绍,并包含丰富的实例代码,涵盖了从基础到高级的网络编程技巧,适合C++程序员学习和参考。

    Boost.Asio C++ Network Programming.pdf

    标题《Boost.Asio C++ Network Programming》和描述表明本文档是一本关于使用Boost.Asio库进行C++网络编程的电子书。网络编程是一项要求严谨的复杂任务,涉及底层的网络通信和协议处理。Boost.Asio提供了一种简便的...

    Boost.Asio C++ Network Programming Cookbook.pdf

    Boost.Asio C++ Network Programming Cookbook.pdf Boost.Asio C++ Network Programming Cookbook.pdf

    Boost.Asio.C++.Network.Programming.

    《Boost.Asio.C++.Network.Programming.》是关于使用C++进行网络编程的一份资源,主要聚焦于Boost.Asio库的使用。Boost.Asio是一个强大的、跨平台的库,用于处理I/O操作,如网络通信,它使得在C++中编写并发、异步...

    C++中文版网络编程boost asio.docx

    - **定义**:Boost Asio 是一个跨平台的 C++ 库,它提供了一种简单且统一的方式来访问底层网络编程接口。 - **目标**:简化网络编程过程,支持同步和异步操作,适用于多种平台(如 Windows 和 POSIX 系统)。 #####...

    Boost.Asio C++ Network Programming Cookbook 原版pdf by Radchuk

    The Boost.Asio library is aimed at reducing accidental complexity by introducing type systems and exploiting object-oriented methods, and decreasing the development time by providing high degrees of ...

    C++RPC基于boost.asio、boost.serialization等boost库进行反射.zip

    本项目“C++ RPC基于boost.asio、boost.serialization等boost库进行反射”是针对C++编程语言实现的一套RPC框架,利用了Boost库的强大功能来提高其效率和可维护性。 首先,让我们详细了解一下关键组件: 1. **Boost...

    Boost.Asio c++网络编程源码

    Boost.Asio是C++库中的一个强大工具,用于进行异步I/O操作,它在C++17标准下被广泛使用。本源码包包含了基于Boost.Asio进行网络编程的各种示例,帮助开发者深入理解其工作原理和用法。下面我们将详细探讨Boost.Asio...

Global site tag (gtag.js) - Google Analytics