簡(jiǎn)介
Boost.Asio是一個(gè)跨平臺(tái)的C++庫(kù),主要用于網(wǎng)絡(luò)和其他一些底層的I/O編程。
在大量的網(wǎng)絡(luò)編程庫(kù)中,Boost.Asio是其中的佼佼者,它于2005年加入到Boost,已經(jīng)被廣泛的測(cè)試并且應(yīng)用在多個(gè)項(xiàng)目中,如:
- Remobo (http://www.remobo.com),用于創(chuàng)建瞬時(shí)專(zhuān)用網(wǎng)絡(luò)(IPN)
- libtorrent (http://www.rasterbar.com/products/libtorrent), 用于實(shí)現(xiàn)BT的客戶(hù)端
- 開(kāi)源德州撲克游戲PokerTH (http://www. pokerth.net)
Boost.Asio成功的抽象了包括網(wǎng)絡(luò),串口、文件在內(nèi)的同步和異步的I/O操作:
- read(stream, buffer [, extra options])
- async_read(stream, buffer [, extra options], handler)
- write(stream, buffer [, extra options])
- async_write(stream, buffer [, extra options], handler)
Boost.Asio支持大多數(shù)操作系統(tǒng),輕量可擴(kuò)展的,目前網(wǎng)絡(luò)部分支持TCP, UDP, IMCP,可以很方便的擴(kuò)展自定義協(xié)議。
歷史
Boost.Asio于2003年開(kāi)始開(kāi)發(fā),2005年12月加入到Boost 1.35,原始作者Christopher M. Kohlhoff。
支持的平臺(tái)和編譯器如下:
• 32位和64位Windows, Visual C++ 7.1及以上
• Windows, MinGW
• Windows , Cygwin (必須定義宏#define USE_232_SOCKETS)
• 基于2.4和2.6核心的Linux , g++ 3.3 及以上
• Solaris, g++ 3.3 及以上
• MAC OS X 10.4+, g++ 3.3 及以上
在其他平臺(tái)也應(yīng)該能正常工作,如:
AIX 5.3, HP-UX 11i v3, QNX Neutrino 6.3, Solaris using Sun Studio 11+, True64 v5.1, Windows using Borland C++ 5.9.2+ (consult at www.boost.org for more details).
依賴(lài)關(guān)系Boost.Asio 依賴(lài)如下庫(kù):
• Boost.System: 必選,提供了操作系統(tǒng)底層函數(shù)的支持
• Boost.Regex: 可選,如果你使用了帶boost::regex參數(shù)的read_until() 和 async_read_until()
• Boost.DateTime: 可選,如果你使用了定時(shí)器
• OpenSSL: 可選,如果需要SSL的支持
編譯
Boost.Asio 是只有頭文件的庫(kù),無(wú)需編譯直接使用,但是你也可以編譯成靜態(tài)或者動(dòng)態(tài)庫(kù), 減少程序的編譯時(shí)間。
• 包含頭文件 #include <boost/asio/impl/src.hpp>(如果使用SSL, 也要包含 #include <boost/asio/ssl/impl/src.hpp>), 而不是包含 <boost/asio.hpp>
• 在程序的源文件里定義宏 #define BOOST_ASIO_SEPARATE_COMPILATION
由于Boost.Asio 依賴(lài)Boost.System和Boost.Regex, 所以編譯如下:
bjam –with-system –with-regex stage
如果你運(yùn)行完整的測(cè)試,執(zhí)行Asio自帶的樣例,建議編譯如下:
bjam –with-system –with-thread –with-date_time –with-regex –with- serialization stage
注意如果定義了BOOST_ASIO_DISABLE_THREADS宏, 不論boost是否支持線(xiàn)程,asio將會(huì)不支持線(xiàn)程,
posted on 2014-08-11 22:45
merlinfang 閱讀(4702)
評(píng)論(0) 編輯 收藏 引用 所屬分類(lèi):
asio