跟着 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库是一个非常重要的工具集,它为C++标准库提供了许多扩展功能,其中包括Boost.Asio库。Boost.Asio是用于网络编程的模块,它提供了低级和高级的网络通信接口,包括TCP、UDP、套接字以及HTTP等协议...
Boost ASIO 是一个用于编写异步网络应用程序的库,它为C++开发者提供了强大而灵活的工具。这本书《Boost.Asio C++ Network Programming》中文版,结合了完整的源代码,是深入理解和实践ASIO的理想资源。书中涵盖了一...
C++ Boost ASIO库是C++开发者用于网络编程的一个强大工具,它提供了高效、灵活的异步I/O操作。在TCP(传输控制协议)网络通信中,Boost.ASIO允许开发人员实现高效的文件传输,尤其是在大数据量的情况下。在这个场景...
总的来说,基于Boost.ASIO的C++ Web服务器是一个涉及到网络编程、异步I/O、HTTP/HTTPS协议理解和多线程技术的综合性项目。它不仅展示了C++的强大能力,也体现了Boost库在简化复杂任务上的价值。通过深入研究这个项目...
C++ Boost Asio 是一个强大的网络编程库,它为C++开发者提供了低级网络操作的高级接口,包括处理TCP、UDP、套接字、多路复用器等。Asio的设计理念是异步非阻塞,这使得它在处理并发连接和高吞吐量时非常高效。下面将...
Boost.Asio是Boost库的一部分,它为C++程序员提供了低级和高级的网络API,使得开发高效、可扩展的网络应用程序变得简单。这本书详细介绍了如何使用Boost.Asio进行网络编程,涵盖了从基本概念到高级特性的全面内容。 ...
Boost ASIO是C++库中的一个强大工具,用于进行异步网络编程。它提供了一种统一的接口,可以处理各种I/O操作,包括TCP、UDP、套接字、多路复用、本地进程通信等。在C++网络编程中,Boost ASIO是一个不可或缺的组件,...
《Boost.Asio C++ Network Programming》是一本深入探讨C++网络编程的专著,主要聚焦于Boost.Asio库的应用。Boost.Asio是C++标准库的一个强大补充,它提供了低级网络I/O操作的跨平台接口,使得开发者可以轻松地进行...
10. **学习资源**:"Boost ASIO C++ 网络编程 中文版(实例不完整).pdf"可能是该主题的一个教程或指南,可以帮助初学者快速上手Boost ASIO,了解如何利用其功能进行网络编程。 通过深入学习和实践Boost ASIO,...
《Boost.Asio C++ Network Programming》是一本深入探讨C++网络编程的专业书籍,主要...通过学习这本书,你可以掌握使用Boost.Asio库构建高效、可靠的网络应用程序的方法,为你的C++职业生涯增添一项重要的技术武器。
Boost.Asio是Boost库的一部分,专为C++设计,用于处理I/O操作,如网络通信。这个库提供了低级和高级的接口,使得开发者能够高效地编写并发网络应用程序。Boost.Asio的核心在于其异步模型,它支持多种协议,包括TCP、...
### Boost.Asio C++ 网络编程知识点 ...这本书是由C++专家John Torjo编写,提供了对Boost.Asio库的深入介绍,并包含丰富的实例代码,涵盖了从基础到高级的网络编程技巧,适合C++程序员学习和参考。
标题《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.》是关于使用C++进行网络编程的一份资源,主要聚焦于Boost.Asio库的使用。Boost.Asio是一个强大的、跨平台的库,用于处理I/O操作,如网络通信,它使得在C++中编写并发、异步...
- **定义**:Boost Asio 是一个跨平台的 C++ 库,它提供了一种简单且统一的方式来访问底层网络编程接口。 - **目标**:简化网络编程过程,支持同步和异步操作,适用于多种平台(如 Windows 和 POSIX 系统)。 #####...
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库进行反射”是针对C++编程语言实现的一套RPC框架,利用了Boost库的强大功能来提高其效率和可维护性。 首先,让我们详细了解一下关键组件: 1. **Boost...
Boost.Asio是C++库中的一个强大工具,用于进行异步I/O操作,它在C++17标准下被广泛使用。本源码包包含了基于Boost.Asio进行网络编程的各种示例,帮助开发者深入理解其工作原理和用法。下面我们将详细探讨Boost.Asio...