作者:袁 淵(華東船舶工業學院機械系)
轉載請與作者聯系
二、實現方案
整體方案的構思圖如下:
通過上圖,我們可以看到整個系統分為三個相關的程序,即注冊/登陸服務器、通信服務器以及用戶程序。其中,注冊/登陸服務器負責用戶的注冊、登陸以及數據庫管理;通信服務器負責完成數據轉發以及共享數據結構的管理;用戶端則完成注冊、登陸和通信功能。為什麼要把服務器分為兩部分呢?主要是考慮到服務器的用戶容量問題,以及對通信服務器的保護,只有在通過驗證後,用戶在能與通信服務器連接。
由此可見,整個系統通信任務的實現還是很復雜的。用戶端首先必須注冊自己,等待注冊成功;然後根據自己的注冊信息進行服務器登陸,登陸成功後才能與通信服務器連接,進行用戶間通信。
注冊/登陸服務器接收到用戶端的信息後,首先判斷是注冊信息還是登陸信息。如果是注冊信息,則將該數據按預定的格式寫入數據庫,然後返回注冊成功的消息,期間有任何異常產生,服務器都會返回注冊失敗消息,提示用戶重新注冊;如果是登陸信息,則從數據中提取用戶名和ID與數據庫中的內容進行比較,如果該用戶存在,則返回登陸成功消息,反之,返回登陸失敗消息。
通信服務器所完成的主要功能是數據轉發,這是通過與圖中的共享數據結構進行交互完成的。服務器接收到用戶端發來的消息後,提取消息的一部分與共享數據結構存儲的內容進行比較,確定所要轉發的對象,最後通過多線程及其通信機制完成數據轉發。
下面,我們將分三部分來討論系統的具體實現過程。