Boost.Asio 0.37簡介(翻譯自Boost.Asio 0.37的文檔的首頁)
原文:http://asio.sourceforge.net/boost_asio_0_3_7/libs/asio/doc/
翻譯:張沈鵬 http://blog.csdn.net/zuroc or http://www.shnenglu.com/zuroc
Boost.Asio是利用當代C++的先進方法,跨平臺,異步I/O模型的C++網絡庫.
入門
這個教程介紹了客戶端-服務器端的一些基本概念,同時給出了一個示例的小程序.
小程序可以啟示Boost.Asio在復雜程序中的應用.
附注
Boost.Asio的大部分功能沒有必要編譯Boost中的其他庫,僅僅需要它們的頭文件.然而read_until和async_read_until的重載需要Boost.Regex庫(注意:MSVC 或 Borland C++的用戶需要在用戶設置中加入-DBOOST_ALL_NO_LIB來防止與Boost.Date_Time和Boost.Regex的自動鏈接)
需要OpenSSL才可以啟用SSL支持,但Asio的其他部分不需要它.
已經測試的平臺和編譯器:
* Win32 using Visual C++ 7.1 and Visual C++ 8.0.
* Win32 using Borland C++Builder 6 patch 4.
* 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.
* QNX Neutrino 6.3 using g++ 3.3 or later.
原理:
Boost.Asio可以讓程序員用C++的程序體系取代那種需要使用system底層操作的網絡編程.特別的值得注意的是,Boost.Asio試圖解決一下一些問題.
*可移植性.
庫可以支持并提供一系列常用操作系統的一致行為.
*可測量性:
庫允許并鼓勵開發者在網絡編程中檢測成百或成千并發的連接數.庫在各個平臺的實現要用這種機制來最優的實現這種可測量性.
*效率:
庫要支持 分散-聚合I/O(scatter-gather I/O) 之類的技術,允許協議的 最小量(minimise) 的數據交換.
*伯克利(Berkeley) sockets模型:
該模型的API被廣泛的采用和理解,被許多文獻介紹.其他程序語言通常使用類似網絡API的接口.
*易用:
降低新手使用該工具的入門障礙,勝于框架和模式.也就是說,試圖最簡化前端的學習,僅僅需要理解一些基本規則和指導方針.此外,庫的用戶僅需要理解使用到的特定函數.
*可以作為進一步抽象的基礎:
庫應該允許其他庫的開發者進行更高層的抽象,比如:實現常用的協議Http.
盡管當前的Boost.Asio的實現主要關注的是網絡,但異步I/O可以被擴展到其他系統資源,比如 文件.