張玉,賈遂民,鄭桂萍
(鄭州師范學院信息科學與技術學院,河南 鄭州 450044)
聊天系統目前使用范圍非常廣泛。但是很多企業為了管理方便和防止重要數據泄露,會選擇自己獨有的通訊系統作為與外界交流、溝通的工具。本系統作為一種聊天軟件,它的開發不但考慮了社會型企業專業化管理的需求和信息安全保障需求,而且成本低、效率高、應用范圍廣、兼容性強。
Socket 套接字是一條通信鏈的句柄,TCP 連接是兩個端點的連接,而這個端點就是抽象的Socket,套接字是由IP 地址加上端口號組合而成的[2]。關于Socket在本系統中的工作原理如圖1所示。

圖1 Socket工作原理圖
Socket是一種接口,主要用于網絡編程方面,也是網絡通訊的基石。在Client/Server 模式下,按照套接字在網絡中所起的不同作用來看,可以將套接字分為客戶機套接字Socket和服務器端套接字ServerSocket。套接字ServerSocket 建立后,就一直監聽本機的預先設定的端口。當套接字Socket 根據服務器端主機IP,地址進行綁定并建立連接,數據流就通過客戶端與服務器之間的Socket 連接將數據傳輸到服務器端,從而實現信息的傳遞。當數據信息傳輸完成時,服務器套接字和客戶端套接字要分別關閉。
根據需求分析,本網絡通訊系統主要由客戶端和服務器兩個部分組成的。圖2 展示的是系統的整體功能設計圖。

圖2 網絡聊天系統的整體功能圖
⑴客戶端:主要功能有用戶的注冊與登錄、設置服務器IP、添加或查看好友,以及好友之間互發文本消息等。用戶可以向服務器端發送各種不同格式的信息包來要求服務器返回不同的結果。用戶可以發送注冊/登錄的請求,同時客戶端還實現了上/下線通知、好友列表顯示、消息的編輯、發送/接收、多用戶通信等功能。
⑵服務器端:此模塊的流程大致為:首先進入可視化窗口,開啟服務器,監聽客戶端,接受客戶端發送的請求消息并與客戶端建立連接;驗證用戶賬號和密碼是否合法。若用戶合法,則服務器為客戶端開啟線程,監聽用戶的動態,實現消息的中轉;如不合法,則繼續處于原始狀態,以便于能夠即時的響應用戶的請求。
本通信系統完成了驗證用戶信息是否合法,驗證完成后的操作可根據窗口提示來進行。當用戶登錄成功進入好友列表界面,用戶就可以互發消息。通訊結束之后,用戶關閉聊天界面,退出客戶端,關閉服務器,退出系統。流程圖如圖3所示。

圖3 基于Socket的網絡聊天系統總體流程圖
本系統采用C/S 結構模式,為了減少服務器的負擔、方便程序的設計,可以添加數據庫作為數據信息存貯的地方。根據功能模塊,設計出三個實體:用戶注冊實體、用戶登錄實體和通信記錄實體,其E-R 圖如圖4所示。

圖4 數據庫總體E-R圖
根據系統E-R 圖設計知系統數據庫中包含三個數據表:用戶注冊信息表、用戶登錄信息表、通信記錄表。
系統主要包含服務器與客戶端。服務器端主要處理開啟服務器、用戶上線和轉發消息三個主要功能,其結構如圖5所示。

圖5 服務端結構圖
客戶端主要包括一些簡單的界面,實現人工交互,并進行請求響應,其結構如圖6所示。

圖6 客戶端總體結構圖
本系統中的客戶端與服務器可以分別放到兩個獨立的計算機上運行,只要知道對應的IP 和端口號就可以達到真實的聊天功能,具有很好的靈活性。系統的主要特性是:靈活的移植性,簡單的界面及時、有效、動態地完成數據信息傳遞;有效地處理客戶的不同請求,易于維護與更新。本系統使用服務器處理消息包,然后中轉,所以當用戶量較大時可能導致服務器壓力較大,影響即時通信的性能,這在后續階段會加以改進與優化。