在上一 篇中C++並發 練習筆記(二)使用boost Asio的async I/O技術實作簡易網路聊天室 (上),
我們直接拿開發團隊的範例來做練習、並理解,但關於函數的使用方法及其意義並未太過深入介紹。
這次,我會比較詳細的紀錄並描述下來。
首先先來看一下再Asio當中一個同步的客戶端,是怎麼寫的。
using boost::asio;
io_service service;
ip::tcp::endpoint ep( ip::address::from_string("127.0.0.1"), 2001);
ip::tcp::socket sock(service);
sock.connect(ep);
service.run();
其中,代碼中一定要創建一個 io_service的這個實體,boost::Asio利用它來跟系統的I/O設備通信,接著再創建
endpoint表示想要連結到的位置以及通訊協定,在此處ip::tcp::endpoint,使用IP協定以及TCP協定進行通信。
再來使用相同通信協定的socket庫來綁定ioservice,並用這個socket來連結到目標端點。
最後的run()函式用於告訴i/o設備開始收發數據。
接著來看一下剛剛同步客戶端跟現在異步客戶端之間的差別
using boost::asio;
io_service service;
ip::tcp::endpoint ep( ip::address::from_string("127.0.0.1"), 2001);
ip::tcp::socket sock(service);