Linux元件封裝 八 Socket的封裝

2022-08-15 09:51:09 字數 863 閱讀 2660

我們要封裝socket,首先我們需要了解socket需要哪些要素:

1) 首先,乙個套接字建立後,需要繫結一塊網絡卡的ip,以及連線的對口號,所以我們先封裝inetaddr。

在class中,僅有的乙個私有成員就是struct sockaddr_in型別的乙個物件,我們需要將該物件的幾種賦值與建立封裝到類中,這樣,我們僅需傳遞相應的ip與port即可獲得乙個addr。

在這裡,我們為了方便獲得該addr的ip及port,封裝幾個將addr轉化為ip及port的函式,這樣我們僅需呼叫函式即可。

然後,我們就可以開始封裝socket的一些基本操作了。

在該類的封裝中,我們需要將相應的繫結、監聽、接收、設定等操作封裝好,這樣,我們僅需呼叫該物件的相應函式,即可獲得乙個處於監聽中的套接字。

對於linux中自帶的read和write函式,我們需要進行另外的封裝,由於read函式不一定能將快取區中的資料讀完,所以我們需要實現乙個能將讀滿指定位元組的函式readn函式,以及相對應的函式,還需要乙個讀滿一行的高效readline函式。

在socketio封裝中,readline函式是乙個較高效的函式,它通過先預覽核心中的一大塊資料,檢視是否有'\n'的存在,若存在,則讀取到'\n'為止,否則將該塊資料全部讀取,然後繼續預覽。

接下來我們需要封裝tcpconnection,我們需要進一步封裝,將socket與socketio相結合,同時設定好相應的介面與**函式,

最後,我們可以開始伺服器的最後封裝,將epollpoller與socket結合封裝為tcpserver,我們只需將新建的socket中的套接字fd傳遞給epollpoller,再通過客戶實現的功能來初始化相應的**函式即可,這樣,我們的socket基本封裝完畢。

相關**及簡單的測試**,可以到下面檢視:

關於元件封裝

1善於總結,通常乙個公司大部分專案,頁面排版型別相近,比如管理系統 1.1從布局上講 大都是上左右結構,適合用easyui做為主框架右邊主頁面用iframe巢狀 1.2從模組上講 常用元件就是 查詢,表單提交,彈出模態框,選項樹,表單驗證,tab選項卡 1.3從頁面樣式風格上講 一般就是紅色和藍色為...

Angular元件封裝

前言 在專案中我們常看到乙個頁面裡的 在很多頁面裡面用到,我們會把它封裝成乙個元件供多個頁面引用我們在頁面看到類似於下圖的標籤,就是引用的封裝好的元件 changepage event editbutton btnedit addopen addopen event,addmodal editdat...

vue 封裝元件

一 通過install 封裝 1 建立元件資料夾包含 vue檔案和對應的.js檔案 如圖 2 完成元件模板 這是乙個公共元件內容 3 在相應的js內註冊元件 list.js檔案 import mylist from list.vue const list export default list 匯入...