日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

网络群聊系统

發布時間:2024/8/1 windows 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 网络群聊系统 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、網絡群聊系統簡介

簡單來說,這個聊天系統是參照《Linux高性能服務器編程》中有個簡單的聊天系統實現的群聊功能。

服務器端負責接收客戶端的消息,放到數據池中,還負責從數據池中取出數據轉發給在線的客戶端;

每個客戶端負責發送和接收數據,還負責數據的序列化和反序列化。

2、網絡群聊系統背景知識

(1)在Linux操作系統下實現,本人用的是CentOS 6.5
(2)熟悉Linux的開發環境,使用vim,g++/gcc, gdb,make/makefile, 會編寫Makefile
(3) 熟悉UDP網絡編程
(4)熟悉C/C++語言,以及STL容器的使用。
(5)熟悉生產者消費者模型,(本系統使用的是單消費者,單生產者)
(6)熟悉多線程編程,了解信號量
(7)了解shell編程,
(8)了解開源庫jsoncpp,nucrse/ncursew

3、群聊系統的實現原理

從上圖可以知道該系統的實現流程:服務器端使用生產者消費者模型,生產者從網絡中拿數據存到數據池中,消費者從數據池中拿數據發送到網絡中,從而達到轉發的目的。

4、群聊系統系統框架

client模塊:暢聊系統client上層邏輯,提供client底層通信
server模塊:暢聊系統server上層邏輯,提供server底層通信
comm模塊:暢聊系統底層公共邏輯,如數據序列化。
data_pool模塊:數據池的實現
window模塊:client窗口模塊
lib第三?方庫模塊:提供第三?方庫模塊
conf模塊:提供server的配置文件
plug插件起停服務腳本模塊:起停服務腳本

5、詳細模塊介紹

5.1數據池
服務端要維護一個數據池,從數據池中存儲和讀取數據,數據池實際上是基于生產者消費者模型的環形隊列。

數據池的類

5.2 服務器端

由于服務器端要轉發數據給客戶端,所以也要維護一張用戶列表,本系統用map實現,用戶ip作為key值,sockaddr_in作為value值。

5.3 客戶端界面window

客戶端界面使用ncures 庫,提供基本的窗口界面,有點low…………

window.h 文件

5.5comm模塊
分裝jsoncpp庫,實現數據的序列化和反序列化.

為什么要對輸入的消息進行序列化和反序列化呢?
我們不能直接將客戶端輸入框輸入的內容發送給服務器,因為用戶很多的話,最后就無法辨別消息是哪個用戶所發的了,為此我們給每條消息都加上當前用戶的信息。所以客戶端給服務器發送的消息是由用戶的信息和從輸入框輸入的消息拼接而成的。

還有就是,如果用戶退出的話,服務器要將該用戶從用戶列表中移除。為此我們可以在客戶端給服務器發送的消息中再拼接一個cmd字段,用來表示客戶端是否退出。

6客戶端udp_client
采用多線程的方式,分別管理四個窗口,分別處理四個窗口事務。

結果演示

項目總結:
(1) 解決群聊系統中識別消息用戶,編寫data類,實現序列化與反序列化。

(2)解決客戶端退出后,界面重置問題,使用信號捕捉函數,捕捉2號信號,執行信號注冊函數。

(3)在項目中引入jsoncpp和ncures庫,在編寫makefile 編譯鏈接庫時,出現錯誤,jsoncpp庫是64位版本,而centos6.5版本是32位版本,出現不兼容,找不到庫的問題。

(4) 編寫Makefile,出現庫路徑找不到情況。

項目源碼
暢聊系統Chat System

總結

以上是生活随笔為你收集整理的网络群聊系统的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。