一種
健康小屋通信服務器的實現(xiàn)方法,基于netty的TCP和UDP協(xié)議服務器端,TCP和UDP協(xié)議服務端分別指定不同的端口號;
健康小屋為客戶端,根據(jù)IP地址和Port端口號分別連接TCP和UDP協(xié)議服務端;
TCP主要程序結(jié)構(gòu),如下:
實現(xiàn)過程為:
TCP協(xié)議服務器端接收客戶端發(fā)送的MD5校驗碼,用于身份識別;MD5若校驗不通過,則斷開連接,重新連接校驗,若校驗通過,則TCP協(xié)議服務器端發(fā)送校驗通過信息;又身份識別的具體過程可為:
健康小屋連接TCP協(xié)議服務器后,發(fā)送midMD5校驗碼,mid是客戶端唯一編號,服務器通過mid從后臺查找對應的version,即版本號和uid,即唯一用戶編號,并獲取當天的日期,然后以mid+version+uid+date為seed生成MD5值并與
健康小屋發(fā)送的MD5校驗碼進行比對,如果對比失敗則回復MD5驗證錯誤的信息,服務器主動斷開
健康小屋的TCP連接;如果比對成功則回復OK信號;其中OK信號可帶有一個時間戳,表示
健康小屋必須在此時間戳內(nèi)發(fā)送體檢數(shù)據(jù)或日志文件到TCP協(xié)議服務器端,否則重新發(fā)送校驗請求;
客戶端接收到TCP協(xié)議服務器端發(fā)送的校驗通過信息后,發(fā)送業(yè)務數(shù)據(jù),業(yè)務數(shù)據(jù)以字節(jié)的形式傳輸;業(yè)務數(shù)據(jù)一般包括數(shù)據(jù)長度、文件類型(H/L)、文件數(shù)據(jù),文件類型中H代表體檢數(shù)據(jù)、L代表日志文件;
TCP協(xié)議服務器端接收到業(yè)務數(shù)據(jù)后,進行數(shù)據(jù)解析,并放入數(shù)據(jù)庫中,返回給客戶端接收到數(shù)據(jù)的信息;進行數(shù)據(jù)解析時,判斷文件類型,并根據(jù)不同的數(shù)據(jù)類型把業(yè)務數(shù)據(jù)放入到不同的數(shù)據(jù)庫中,
健康小屋發(fā)送的文件數(shù)據(jù)中帶有時間戳,表示文件數(shù)據(jù)產(chǎn)生的時間,TCP協(xié)議服務器端根據(jù)時間戳判斷是否重復接收了體檢數(shù)據(jù),如果確定重復接收的數(shù)據(jù)則放棄該數(shù)據(jù);如果不是,則解析新接收的數(shù)據(jù)并入庫,完成業(yè)務數(shù)據(jù)解析入庫后,返回OK信號給
健康小屋;
UDP協(xié)議服務器端根據(jù)客戶端發(fā)送的數(shù)據(jù)的長度不同判斷是報警信號還是驗證用戶信號;
如果是驗證用戶信號則解析信號數(shù)據(jù),根據(jù)信號數(shù)據(jù)查詢數(shù)據(jù)庫并把查詢到的數(shù)據(jù)返回給客戶端,過程為:UDP應用層協(xié)議可實現(xiàn)驗證用戶ID和發(fā)送用戶年齡和性別,用戶利用客戶端輸入auto_id,
健康小屋發(fā)送給UDP協(xié)議服務器端驗證請求,與TCP協(xié)議服務器端相仿,UDP協(xié)議服務器端先校驗MD5,驗證通過后uid來查詢后臺并返回信息給
健康小屋,表示此用戶存在,可以進行體檢;否則返回用戶不存在信息,拒絕體檢請求完成驗證。