基於UDP的網路群聊系統
阿新 • • 發佈:2019-01-11
為什麼用UDP?
UDP是一個無連線的,不可靠的協議。
傳送端的UDP協議層只把應用層傳來的資料封裝成端給IP協議層就完成任務了。
如果因為網路故障無法傳送到對方,UDP協議層也不會給應用層返回任何錯誤資訊。
那麼,為什麼用UDP協議?
很明顯簡單,快捷。
一般UDP協議的應用程式實現都比較簡單,只是傳送一些對可靠性要求不高的訊息。
資料的傳輸方向
軟體大體架構
主要介面
client:
server:
window:
data_pool:
Base_json.h&&data.h
PS:因為資料發來之後還是不知道資料是誰發的。所以這裡在資料前添加了使用者的基本資訊。
結果展示
專案中遇到的問題
- 動態庫的引入
- 當一個使用者退出客戶端的時候,伺服器應該重新整理一次使用者列表視窗,伺服器端應該對訊號處理。(此時cmd為被置成quit)
- 視窗的繪製,客戶端退出視窗的時候,應該endwin。再exit。如果直接exit會出現介面仍然存在的問題。
- 序列化與反序列化的操作。Cjson庫的問題。不會用。
專案仍然存在的問題
很直接的問題:
udp不可靠,怎麼保證資料的可靠性。
會不會出現資料粘包問題。