開源乙個網路框架

2021-09-06 06:40:04 字數 1385 閱讀 4083

前面有幾篇文章介紹過乙個基於linux epoll的網路介面,但並未將介面組合成乙個方便使用的網路框架。

下面先簡單介紹下以前發布過的網路介面:

首先是基本介面:

kendynet.h kendynet.c  

此介面提供了最簡單的單執行緒網路收發模型,並未提供封包解包等功能,使用者可在此之上根據自己的需求封裝出合適的網路框架

第二組介面在第一組介面上提供了封包和解包:

connection.h connectionc 

這個封裝提供了一種比較高效的封包方式,(封包方式的介紹可參看前面的文章)如果使用者覺得這種封包方式可以滿足需求,可在此之上

封裝合適的網路框架.

最後,也就是本文介紹的主題,利用第二組介面封裝出來的,網路與邏輯分離的多執行緒網路框架.

此框架的核心是乙個訊息佇列,用於在網路層和邏輯層之間通訊,網路層將接收到的資料報,網路事件(連線斷開,新到連線)通過訊息佇列傳送到邏輯層,

供邏輯層處理.邏輯層需要傳送的資料,操作(主動關閉套介面)通過訊息佇列傳送到網路層。所有執行緒之間的同步操作,基本上都圍繞著訊息佇列,使用者

下面貼出簡單的echo測試程式:

#include "

netservice.h

"#include

"msg_loop.h

"#include

"datasocket.h

"#include

"systime.h

"int32_t count = 0

;void

server_process_packet(datasocket_t s,rpacket_t r)

void

process_new_connection(datasocket_t s)

void

process_connection_disconnect(datasocket_t s,int32_t reason)

const

char *ip;

uint32_t port;

int main(int argc,char **argv)

netservice_t n = create_net_service(1);//

建立乙個網路服務框架,只使用乙個網路執行緒

net_add_listener(n,ip,port); //

新增監聽

//建立主訊息迴圈物件

msg_loop_t m =create_msg_loop(server_process_packet,process_new_connection,process_connection_disconnect);

while(1

)

return0;

}

乙個遊戲框架

最近一段時間不是很忙,就寫了乙個自己的遊戲伺服器框架雛形,很多地方還不夠完善,但是基本上也算是能夠跑起來了。我先從上層結構說起,一直到實現細節吧,想起什麼就寫什麼。第一部分 伺服器邏輯 伺服器這邊簡單的分為三個部分,客戶端的連線首先到達閘道器伺服器,閘道器這裡有個執行緒用來監聽來自與客戶端的連線,然...

opengoo乙個開源的web office系統

opengoo 是乙個開源的web office,它完全提供了常規的office功能,還能夠通過網路發布和管理文件,目前 支援 text documents spreadsheets coming soon presentations task lists e mails calendars web...

如何熟悉乙個開源專案?

如何熟悉乙個開源專案?你去了解某個東西。怎麼下手呢?如何開始呢?我的習慣是這樣 1.首先,查詢和閱讀該項目的部落格和資料,通過google你能找到某個專案大體介紹的部落格,快速閱讀一下就能對專案的目的 功能 基本使用有個大概的了解。2.閱讀專案的文件,重點關注類似 getting started e...