C++並發 練習筆記(二)使用boost Asio的async I/O技術實作簡易網路聊天室 (下)

本文详细介绍了如何使用boost Asio库的异步I/O技术实现C++网络聊天室。通过对比同步客户端与异步客户端的区别,阐述了async_connect的工作原理,并探讨了io_service在多线程环境中的应用,强调了单线程、多线程场景下的性能考量和调度问题。

在上一 篇中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);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值