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://m.shnenglu.com/zuroc
Boost.Asio是利用當(dāng)代C++的先進(jìn)方法,跨平臺,異步I/O模型的C++網(wǎng)絡(luò)庫.
入門
這個教程介紹了客戶端-服務(wù)器端的一些基本概念,同時給出了一個示例的小程序.
小程序可以啟示Boost.Asio在復(fù)雜程序中的應(yīng)用.
附注
Boost.Asio的大部分功能沒有必要編譯Boost中的其他庫,僅僅需要它們的頭文件.然而read_until和async_read_until的重載需要Boost.Regex庫(注意:MSVC 或 Borland C++的用戶需要在用戶設(shè)置中加入-DBOOST_ALL_NO_LIB來防止與Boost.Date_Time和Boost.Regex的自動鏈接)
需要OpenSSL才可以啟用SSL支持,但Asio的其他部分不需要它.
已經(jīng)測試的平臺和編譯器:
* 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底層操作的網(wǎng)絡(luò)編程.特別的值得注意的是,Boost.Asio試圖解決一下一些問題.
*可移植性.
庫可以支持并提供一系列常用操作系統(tǒng)的一致行為.
*可測量性:
庫允許并鼓勵開發(fā)者在網(wǎng)絡(luò)編程中檢測成百或成千并發(fā)的連接數(shù).庫在各個平臺的實現(xiàn)要用這種機(jī)制來最優(yōu)的實現(xiàn)這種可測量性.
*效率:
庫要支持 分散-聚合I/O(scatter-gather I/O) 之類的技術(shù),允許協(xié)議的 最小量(minimise) 的數(shù)據(jù)交換.
*伯克利(Berkeley) sockets模型:
該模型的API被廣泛的采用和理解,被許多文獻(xiàn)介紹.其他程序語言通常使用類似網(wǎng)絡(luò)API的接口.
*易用:
降低新手使用該工具的入門障礙,勝于框架和模式.也就是說,試圖最簡化前端的學(xué)習(xí),僅僅需要理解一些基本規(guī)則和指導(dǎo)方針.此外,庫的用戶僅需要理解使用到的特定函數(shù).
*可以作為進(jìn)一步抽象的基礎(chǔ):
庫應(yīng)該允許其他庫的開發(fā)者進(jìn)行更高層的抽象,比如:實現(xiàn)常用的協(xié)議Http.
盡管當(dāng)前的Boost.Asio的實現(xiàn)主要關(guān)注的是網(wǎng)絡(luò),但異步I/O可以被擴(kuò)展到其他系統(tǒng)資源,比如 文件.