boost asio開發2 網路IO讀寫類的封裝

2021-06-14 04:53:23 字數 932 閱讀 3087

1 完美的封裝 

開發網路應用,最基本的事情就是就是先封裝好網路模型和資料傳輸介面,在boost中,這兩件事情都由asio做了,而且做得足夠好,無論在window或linux下,諸如重疊io,iocp和epoll,select這些幾乎所有網路模型都已經被封裝在asio::io_service中,而socket的連線,讀寫也被非常方便的包裝在tcp udp的類中,似乎我們已無事可幹,或者,我們在此基礎上可以包裝出更方便,更通用的的**,如針對asio中tcp和udp介面,可以通過模板,包裝成與協議無關的資料傳輸介面。

2 基本io傳輸介面封裝,支援tcp及udp

///s: asio::ip::tcp::socket or udp socket. is_udp: is udp 

templateclass network_io

~network_io()

void asyncwrite(void* buffer,size_t size, boost::functionfunc)

void asyncread(void* buffer,size_t size, boost::functionfunc)

void stop() }

static const bool _is_msg_mode = is_udp;

private:

void onio(boost::functionfunc,boost::system::error_code err,size_t size)

else

catch(...)

}}private:

volatile long _stop;

s& _socket;

};typedef network_ionetwork_tcp_io;

typedef network_ionetwork_upd_io;

72 網路開發概念

1 http請求有關的幾個概念 在網路程式設計中,有幾個必須掌握的基本概念 客戶端 client 移動應用 ios android等應用 伺服器 server 為客戶端提供服務 提供資料 提供資源的機器 請求 request 客戶端向伺服器索取資料的一種行為 響應 response 伺服器對客戶端的...

python 2 網路程式設計

訪問某網域名稱的過程 以www.baidu.com 為例 1.先要知道預設閘道器的mac 1.1 使用arp獲取預設閘道器的mac位址 1.2.組織資料傳送給預設閘道器 ip為dns伺服器的ip,但是mac位址是預設閘道器的mac位址 1.3.預設閘道器擁有 資料的能力,把資料 給路由器 1.4.路...

Web基礎(2)網路基礎

1.osi7網路模型 特點說明 2.路由器的作用 廣播 組播控制 對資料做定址 選擇到達目的網路的最佳路徑 流量管理 連線廣域網 wan 3.協議 協議是通訊雙方為了實現通訊兒設計的約定或通話規則 http協議,tcp ip協議族 tcp ip協議族的三次握手和四次斷開過程 4.網路的層次說明 核心...