當前位置:
首頁 > 最新 > 一個基於C+和UDP的簡單即時通信伺服器的實現

一個基於C+和UDP的簡單即時通信伺服器的實現

一轉眼,時間已經到了2018年。在過去的一年中,人工智慧被炒作得火熱,而數字貨幣市場也風起雲湧。而IT市場的行業壟斷也日益嚴重,各種電子產品相繼漲價,玩起了「蘿蔔漲」。

我無法預測目前的這些行業熱點在未來會有什麼發展,但是有一個事實是明了的:信息產業的「田園時代」已經過去,網路匿名已經日益成為一種奢侈。從之前的各種網路資源被移除,到今年中旬來姐QQ被封號,再到後來幾乎所有網路平台都要求「實名制」,我國對信息產業的監管力度正邁向一個前所未有的高峰。

我有點害怕,說不定將來的哪天我會因為聊天記錄而去坐文字獄。我覺得自建即時通訊伺服器已經有了一定的必要性。

於是,現學現用,我花了幾天時間學習了一點網路通信和信息安全方面的知識,設計並實現了一個簡單的網路即時通訊體系

這套體系是需要伺服器的,所謂的伺服器,主要是利用它的固定IP地址的優勢。利用一個固定的IP來為沒有固定IP(甚至是處於內網)的客戶端們牽線搭橋。伺服器只存賬號密碼和該賬號目前的IP地址以及埠號。每當客戶端上線,伺服器驗證客戶端的身份,並登記它目前所使用的IP地址。當客戶端希望與另一個客戶端通信時,它首先查詢本地的緩存,如果緩存不命中,就繼續詢問伺服器。獲得對方的地址後,直接向對方發送信息。如果對方不在線,可以選擇將信息緩存在伺服器上。這些通信可以對內容進行非對稱加密,從而保證安全性。所以只要願意,即使攻擊者完全控制了伺服器,也不會有信息泄露的風險,同時接受者還能順利收到消息。

同時,無論客戶端和伺服器怎麼實現,只要符合信息發送的格式,就能做到互相通信,所以人人都能夠定製並架設這樣的伺服器。

比如我的伺服器端的實現是這樣的:

伺服器進行初始化後,進入一個while(1)循環,不斷等待接收UDP請求,並將處理結果返回給客戶端。

目前已完成的功能:

1. 註冊

2. 登陸

3. 上線

4. 下線

5. 請求其他用戶IP

6. 基於MD5的密碼加密

未完成功能:

1. 基於區塊鏈的用戶信息保存

2. 多伺服器同步功能

3. 數據持久化

4. 非對稱的通信加密

5. 數據包壓縮以節省帶寬

6.混淆演算法(如果以後該服務被封就得用了

客戶端設計指導:

參閱:

https://github.com/ZhehooMorgen/pigeon/blob/master/README.md

作者:Sin

編輯:囧星人&喵


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 SUMSTC 的精彩文章:

TAG:SUMSTC |