1. 程式人生 > >基於UDP的網路群聊系統

基於UDP的網路群聊系統

為什麼用UDP?

UDP是一個無連線的,不可靠的協議。
傳送端的UDP協議層只把應用層傳來的資料封裝成端給IP協議層就完成任務了。
如果因為網路故障無法傳送到對方,UDP協議層也不會給應用層返回任何錯誤資訊。
那麼,為什麼用UDP協議?
很明顯簡單,快捷。
一般UDP協議的應用程式實現都比較簡單,只是傳送一些對可靠性要求不高的訊息。

資料的傳輸方向

這裡寫圖片描述

軟體大體架構

這裡寫圖片描述
這裡寫圖片描述

主要介面

client:
這裡寫圖片描述

server:
這裡寫圖片描述

window:
這裡寫圖片描述

data_pool:
這裡寫圖片描述

Base_json.h&&data.h
這裡寫圖片描述
PS:因為資料發來之後還是不知道資料是誰發的。所以這裡在資料前添加了使用者的基本資訊。

結果展示

這裡寫圖片描述

專案中遇到的問題

  1. 動態庫的引入
  2. 當一個使用者退出客戶端的時候,伺服器應該重新整理一次使用者列表視窗,伺服器端應該對訊號處理。(此時cmd為被置成quit)
  3. 視窗的繪製,客戶端退出視窗的時候,應該endwin。再exit。如果直接exit會出現介面仍然存在的問題。
  4. 序列化與反序列化的操作。Cjson庫的問題。不會用。

專案仍然存在的問題

很直接的問題:
udp不可靠,怎麼保證資料的可靠性。
會不會出現資料粘包問題。

專案原始碼