boost.asio是乙個跨平台的網路及底層io的c++
程式設計庫,它使用現代c++
手法實現了統一的非同步呼叫模型。
標頭檔案
#include名空間
using namespace boost::asio;asio庫能夠使用tcp、udp、icmp、串列埠來傳送/接收資料,下面先介紹tcp協議
的讀寫操作
對於讀寫方式,asio支援同步和非同步兩種方式,首先登場的是同步方式,下面請同步方式自我介紹一下:
端,我會做個socket交給acceptor物件,讓它一直等客戶端連進來,連上以後再通過這個socket與客戶端通訊, 而所有的通訊都是以阻塞方式進行的,讀完或寫完才會返回。
在客戶端也一樣,這時我會拿著socket去連線伺服器,當然也是連上或出錯了才返回,最後也是以阻塞的方式和伺服器通訊。
有人認為同步方式沒有非同步方式高效,其實這是片面的理解。在單執行緒的情況下可能確實如此,我不能利用耗時的網路操作這段時間做別的事 情,不是好的統籌方法。不過這個問題可以通過多執行緒來避免,比如在伺服器端讓其中乙個執行緒負責等待客戶端連線,連線進來後把socket交給另外的執行緒去 和客戶端通訊,這樣與乙個客戶端通訊的同時也能接受其它客戶端的連線,主線程也完全被解放了出來。
我的介紹就有這裡,謝謝大家!
好,感謝同步方式的自我介紹,現在放出同步方式的演示**(起立鼓掌!):
伺服器端
#include客戶端#include
using
namespace boost::asio;
int main(int argc, char* argv)
// 與當前客戶互動完成後迴圈繼續等待下一客戶連線
} return 0;
}
#include從演示**可以得知#include
using
namespace boost::asio;
int main(int argc, char* argv)
// 接收資料
char buf[100];
size_t len=socket.read_some(buffer(buf), ec);
std::cout.write(buf, len);
return 0;
}
boost asio的Tcp同步方式
boost.asio是乙個跨平台的網路及底層io的c 程式設計庫。標頭檔案 include命名空間 using namespace boost asio using boost asio ip tcp asio庫能夠使用tcp udp icmp 串列埠來傳送 接收資料,本文件介紹tcp協議的同步讀寫...
boost asio程式設計 同步TCP
boost.asio庫是乙個跨平台的網路及底層io的c 程式設計庫,它使用現代c 手法實現了統一的非同步呼叫模型。boost.asio庫支援tcp udp icmp通訊協議。下面介紹同步tcp模式 在伺服器端,我會做個socket交給acceptor物件,讓它一直等客戶端連進來,連上以後再通過這個s...
boost asio中的C S同步例項原始碼
近來狂熱地研究boost的開發技術,現將讀書筆記整理如下 需要說明的是,本博該專題下面關於boost的原始碼是採用boost1.55版本,執行在ubuntu 14.04 64bit下面,使用apt包安裝 非原始碼編譯安裝 後續不再做說明.同步socket型別的伺服器原始碼實現 g g sync tc...