posts - 6,  comments - 61,  trackbacks - 0

 

Boost.Asio is a cross-platform C++ library for network programming that provides developers with a consistent asynchronous I/O model using a modern C++ approach.

Boost.Asio是一个跨平台的C + +库,它用现代C++方法为网络编程人员提供一致的异步I/O模型。

 

Using Boost.Asio

How to use Boost.Asio in your applications. Includes information on library dependencies and supported platforms.

如何在你的应用程序中使用Boost.Asio库,以及关于库依赖和所支持平台信息。 

Tutorial

A tutorial that introduces the fundamental concepts required to use Boost.Asio, and shows how to use Boost.Asio to develop simple client and server programs.

介绍使用Boost.Asio必备的基本概念,同时示范如何使用Boost.Aaio开发简单的客户端\服务器程序。

Examples

Examples that illustrate the use of Boost.Asio in more complex applications.

更加复杂的应用程序中使用Boost.Asio的示例。

Reference

Detailed class and function reference.

类和函数的详细参考

Design

Rationale and design information for Boost.Asio.

Boost.Asio库的基本原理及设计思路。

Supported Platforms

 支持平台:

The following platforms and compilers have been tested:

已测试的平台和编译器:

 

  • Win32 and Win64 using Visual C++ 7.1 and Visual C++ 8.0.
  • Win32 using MinGW.
  • Win32 using Cygwin. (__USE_W32_SOCKETS must be defined.)
  • Linux (2.4 or 2.6 kernels) using g++ 3.3 or later.
  • Solaris using g++ 3.3 or later.
  • Mac OS X 10.4 using g++ 3.3 or later.

The following platforms may also work:

以下的平台可能也可以使用:

 

  • AIX 5.3 using XL C/C++ v9.
  • HP-UX 11i v3 using patched aC++ A.06.14.
  • QNX Neutrino 6.3 using g++ 3.3 or later.
  • Solaris using Sun Studio 11 or later.
  • Tru64 v5.1 using Compaq C++ v7.1.
  • Win32 using Borland C++ 5.9.2

Dependencies

依赖性:

The following libraries must be available in order to link programs that use Boost.Asio:

以下是使用Boost.Asio 必需的链接库:

 

  • Boost.System for the boost::system::error_code and boost::system::system_error classes.
  • Boost.Regex (optional) if you use any of the read_until() or async_read_until() overloads that take a boost::regex parameter.
  • OpenSSL (optional) if you use Boost.Asio's SSL support.

 

 

Boost.System 中的 boost::system::error_codeboost::system::system_error 类。

Boost.Regex (可选)。read_until() 或 async_read_until() 函数的重载形式都需要 boost::regex 参数。 如果你使用它们,则需要Boost.Regex库。

OpenSSL (可选) 。如果需要Boost.Asio支持SSL,则需要OpenSSL

 

Furthermore, some of the examples also require the Boost.Thread, Boost.Date_Time or Boost.Serialization libraries.

另外,一些例子需要提供Boost.Thread,Boost.Date_Time 或Boost.Serialization 库的支持。

 

[Note] Note

With MSVC or Borland C++ you may want to add -DBOOST_DATE_TIME_NO_LIB and -DBOOST_REGEX_NO_LIB to your project settings to disable autolinking of the Boost.Date_Time and Boost.Regex libraries respectively. Alternatively, you may choose to build these libraries and link to them.

 

注意:

使用MSVC或Borland C++,你可能需要在“工程设置”中分别添加 -DBOOST_DATE_TIME_NO_LIB-DBOOST_REGEX_NO_LIB 声明,分别禁止Boost.Date_Time和Boost.Regex的自动链接,当然你也可以这样做:build这两个库,然后链接。

Building Boost Libraries

 编译Boost库:

You may build the subset of Boost libraries required to use Boost.Asio and its examples by running the following command from the root of the Boost download package:

你可以在下载包的根目录下执行如下的命令来编译Boost.Asio所必需的Boost库子集 


bjam --with-system --with-thread --with-date_time --with-regex --with-serialization stage

This assumes that you have already built bjam. Consult the Boost.Build documentation for more details.

这里假设你已经编译了bjam。请参考Boost.Build文档以获得更多信息。

Macros

The macros listed in the table below may be used to control the behaviour of Boost.Asio.

下表中的宏用来控制Boost.Asio状态

Macro

Description

BOOST_ASIO_ENABLE_BUFFER_DEBUGGING

Enables Boost.Asio's buffer debugging support, which can help identify when invalid buffers are used in read or write operations (e.g. if a std::string object being written is destroyed before the write operation completes).

When using Microsoft Visual C++, this macro is defined automatically if the compiler's iterator debugging support is enabled, unless BOOST_ASIO_DISABLE_BUFFER_DEBUGGING has been defined.

When using g++, this macro is defined automatically if standard library debugging is enabled (_GLIBCXX_DEBUG is defined), unless BOOST_ASIO_DISABLE_BUFFER_DEBUGGING has been defined.

BOOST_ASIO_DISABLE_BUFFER_DEBUGGING

Explictly disables Boost.Asio's buffer debugging support.

BOOST_ASIO_DISABLE_DEV_POLL

Explicitly disables /dev/poll support on Solaris, forcing the use of a select-based implementation.

BOOST_ASIO_DISABLE_EPOLL

Explicitly disables epoll support on Linux, forcing the use of a select-based implementation.

BOOST_ASIO_DISABLE_KQUEUE

Explicitly disables kqueue support on Mac OS X and BSD variants, forcing the use of a select-based implementation.

BOOST_ASIO_DISABLE_IOCP

Explicitly disables I/O completion ports support on Windows, forcing the use of a select-based implementation.

BOOST_ASIO_NO_WIN32_LEAN_AND_MEAN

By default, Boost.Asio will automatically define WIN32_LEAN_AND_MEAN when compiling for Windows, to minimise the number of Windows SDK header files and features that are included. The presence of BOOST_ASIO_NO_WIN32_LEAN_AND_MEAN prevents WIN32_LEAN_AND_MEAN from being defined.

BOOST_ASIO_NO_DEFAULT_LINKED_LIBS

When compiling for Windows using Microsoft Visual C++ or Borland C++, Boost.Asio will automatically link in the necessary Windows SDK libraries for sockets support (i.e. ws2_32.lib and mswsock.lib, or ws2.lib when building for Windows CE). The BOOST_ASIO_NO_DEFAULT_LINKED_LIBS macro prevents these libraries from being linked.

BOOST_ASIO_SOCKET_STREAMBUF_MAX_ARITY

Determines the maximum number of arguments that may be passed to the basic_socket_streambuf class template's connect member function. Defaults to 5.

BOOST_ASIO_SOCKET_IOSTREAM_MAX_ARITY

Determines the maximum number of arguments that may be passed to the basic_socket_iostream class template's constructor and connect member function. Defaults to 5.

BOOST_ASIO_ENABLE_CANCELIO

Enables use of the CancelIo function on older versions of Windows. If not enabled, calls to cancel() on a socket object will always fail with asio::error::operation_not_supported when run on Windows XP, Windows Server 2003, and earlier versions of Windows. When running on Windows Vista, Windows Server 2008, and later, the CancelIoEx function is always used.

The CancelIo function has two issues that should be considered before enabling its use:

* It will only cancel asynchronous operations that were initiated in the current thread.

* It can appear to complete without error, but the request to cancel the unfinished operations may be silently ignored by the operating system. Whether it works or not seems to depend on the drivers that are installed.

For portable cancellation, consider using one of the following alternatives:

* Disable asio's I/O completion port backend by defining BOOST_ASIO_DISABLE_IOCP.

* Use the socket object's close() function to simultaneously cancel the outstanding operations and close the socket.


Basic Skills

基本技能

The tutorial programs in this first section introduce the fundamental concepts required to use the asio toolkit. Before plunging into the complex world of network programming, these tutorial programs illustrate the basic skills using simple asynchronous timers.

本指南的第一部分主要介绍使用Asio工具包所需要了解的基本概念。在进入复杂网络编程世界之前,这些示例程序将举一些使用简单异步定时器的例子。

 

 

Timer1、使用同步定时器
Timer2、使用异步定时器
Timer3、回调函数绑定参数
Timer4、成员函数作为回调函数
Timer5、多线程回调同步

Introduction to Sockets

介绍套接字

The tutorial programs in this section show how to use asio to develop simple client and server programs. These tutorial programs are based around the daytime protocol, which supports both TCP and UDP.

这部分的实例主要介绍如何使Asio开发简单的客户端\服务器程序。这些程序都基于同时支持TCP和UDP协议的daytime协议。

The first three tutorial programs implement the daytime protocol using TCP.

前三个程序用TCP实现daytime协议。

 

 

Daytime1、同步TCP daytime客户端
Daytime2、同步TCP daytime服务器
Daytime3、异步TCP daytime服务器

The next three tutorial programs implement the daytime protocol using UDP.

接下来的三个程序用UDP实现daytime协议。

 

 

Daytime4、同步UDP daytime客户端
Daytime5、同步UDP daytime服务器
Daytime6、异步UDP daytime服务器

The last tutorial program in this section demonstrates how asio allows the TCP and UDP servers to be easily combined into a single program.

本部分的最后一个程序演示了asio怎样将TCPUDP服务器简易的组合到一个程序里

 

Daytime7、结合了TCP/UDP的同步服务器

posted on 2008-04-20 01:14 王晓轩 阅读(7903) 评论(1)  编辑 收藏 引用 所属分类: C\C++

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理