魏明軍 劉美璠
摘要:該文討論了基于局域網(wǎng)的即時(shí)通訊系統(tǒng)。首先分析了即時(shí)通訊系統(tǒng)的構(gòu)架;其次講解了即時(shí)通訊系統(tǒng)主要功能的實(shí)現(xiàn),注冊(cè)模塊、登陸模塊、聊天模塊、文件傳輸模塊等;最后給出了系統(tǒng)出錯(cuò)及其處理方法。
關(guān)鍵詞:及時(shí)通訊;局域網(wǎng);多服務(wù)器
中圖分類號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2016)05-0039-02
Abstract: The instant messaging system based on local area network is discussed. First of all, it analyzes the architecture of instant messaging system, and then explains the main functions of instant messaging system, such as registration module, login module, chat module, file transfer module and so on. Finally, the system error and its processing method are given.
Key words: timely communication; local area network; multi server
即時(shí)通訊(Instant Messenger,簡(jiǎn)稱IM)[1]是一種基于局域網(wǎng)或者Internet應(yīng)用的實(shí)時(shí)交互方式,即時(shí)通訊的迅速發(fā)展正在急劇地改變?nèi)藗兺ㄓ?、協(xié)作和娛樂的方式。
1 系統(tǒng)架構(gòu)分析
局域網(wǎng)即時(shí)通信軟件總體功能劃分為客戶端和服務(wù)器端[2]。首先,啟動(dòng)服務(wù)器設(shè)置服務(wù)器的網(wǎng)絡(luò)參數(shù)(IP和通訊端口),接著啟動(dòng)客戶端,設(shè)置網(wǎng)絡(luò)參數(shù)登錄服務(wù)器,待服務(wù)器連接成功,注冊(cè)用戶,用戶登錄,添加好友,與好友通訊。在通訊過程中若與服務(wù)器的連接斷開,客戶端可以重新登錄局域網(wǎng)內(nèi)部的服務(wù)器,局域網(wǎng)內(nèi)的客戶端可以繼續(xù)進(jìn)行即時(shí)通訊。服務(wù)器端主要用戶接收并轉(zhuǎn)發(fā)客戶端的聊天信息和控制信息。本系統(tǒng)采用了傳統(tǒng)的客戶端/服務(wù)器(C/S)架構(gòu)[3]。使用Java網(wǎng)絡(luò)編程[4-7]、文件操作、流處理以及多線程等技術(shù)實(shí)現(xiàn)系統(tǒng)的主要功能。傳送消息使用簡(jiǎn)單快捷的UDP協(xié)議[8]。在數(shù)據(jù)庫方面,采用Java提供的JDBC技術(shù)連接和操作數(shù)據(jù)庫。
1)服務(wù)器端的處理過程:?jiǎn)?dòng)服務(wù)器后,首先啟動(dòng)連接線程用于接收客戶端的連接請(qǐng)求,服務(wù)器端綁定指定的TCP端口,監(jiān)聽該端口的連接請(qǐng)求,接收到客戶端的請(qǐng)求后便另外生成一個(gè)Socket[10],用于與該客戶端進(jìn)行通信,并將用戶相關(guān)信息包括該用戶的Socket保存在服務(wù)器端,并將新用戶的信息發(fā)送給其他所有在線的客戶端。然后啟動(dòng)通信線程用于接收、轉(zhuǎn)發(fā)客戶端的消息,通信線程使用UDP協(xié)議,綁定一個(gè)UDP端口,該UDP端口接收到一個(gè)UDP報(bào)文后,讀取報(bào)文中的內(nèi)容并判斷報(bào)文的類型,將該報(bào)文轉(zhuǎn)發(fā)給客戶端。服務(wù)器端還需要啟動(dòng)一個(gè)控制線程,該控制線程用于與客戶端傳遞控制信息,包括客戶端退出消息,傳送文件請(qǐng)求,傳送文件確認(rèn)以及傳送文件拒絕等消息。該線程同樣適用UDP協(xié)議,根據(jù)接收到不同類型的消息作出響應(yīng)。
2)客戶端的處理過程:客戶端啟動(dòng)之后會(huì)打開用戶登錄界面,如果用戶尚未注冊(cè),點(diǎn)擊登錄界面中的“注冊(cè)”按鈕打開用戶注冊(cè)界面,在用戶注冊(cè)界面中輸入用戶名密碼等相關(guān)信息,點(diǎn)擊“確定”按鈕,客戶端會(huì)連接數(shù)據(jù)庫判斷用戶輸入的信息是否正確,如果輸入正確則注冊(cè)成功,輸入錯(cuò)誤提示注冊(cè)失敗。如果用戶已經(jīng)注冊(cè)過,便可以在登錄界面輸入用戶名密碼和服務(wù)器端的IP地址與服務(wù)器建立連接,建立連接后客戶端會(huì)將用戶的相關(guān)信息發(fā)送給服務(wù)器端。登錄成功后顯示軟件的主界面。
2 系統(tǒng)主要功能的實(shí)現(xiàn)
2.1 注冊(cè)模塊
用戶運(yùn)行客戶端程序,配置服務(wù)器參數(shù),測(cè)試與服務(wù)器連接是否成功,連接成功后,新用戶點(diǎn)擊注冊(cè)按鈕后,按照提示輸入用戶名(用戶檢測(cè)是否已經(jīng)注冊(cè))、密碼、確認(rèn)密碼。如果用戶名沒有重復(fù),則把用戶信息存入服務(wù)器端的數(shù)據(jù)庫的用戶信息表中,流程圖如圖1所示。
2.2 用戶登錄
用戶運(yùn)行客戶端程序,首先要配置服務(wù)器參數(shù),測(cè)試與服務(wù)器連接是否成功,連接成功后,用戶點(diǎn)擊登錄按鈕后,按照提示輸入用戶名及其密碼,如果用戶名及密碼與服務(wù)器端數(shù)據(jù)庫的用戶名及密碼相匹配,成功登錄到服務(wù)器。配置服務(wù)器的地址和端口成功后,已經(jīng)注冊(cè)的用戶在客戶端用戶名和密碼表示。當(dāng)用戶成功登錄系統(tǒng)后,進(jìn)入系統(tǒng)主界面。主界面的好友列表中顯示所有當(dāng)前在線的用戶,點(diǎn)擊好友項(xiàng)便可打開一對(duì)一的聊天窗口,在聊天窗口的下方輸入信息,點(diǎn)擊“發(fā)送”按鈕將信息發(fā)送給服務(wù)器端。服務(wù)器端的通信線程接收到該信息后,根據(jù)信息的目的地址將其轉(zhuǎn)發(fā)給目的端。用戶可以將好友加入群發(fā)列表以發(fā)送消息給多個(gè)好友,流程圖如圖2所示。
2.3 聊天模塊
1)點(diǎn)對(duì)點(diǎn)聊天:主界面中的好友列表顯示當(dāng)前在線的好友,點(diǎn)擊好友條目,彈出聊天窗口,用戶在聊天窗口下方輸入聊天信息,點(diǎn)擊“發(fā)送按鈕”后,軟件將用戶輸入信息和當(dāng)前聊天好友相關(guān)信息封裝成一個(gè)Message類的對(duì)象,并將該Message對(duì)象type設(shè)置成“通信消息”,然后將信息發(fā)送給服務(wù)器端,服務(wù)器端接受到后根據(jù)信息類型和目的地址將其轉(zhuǎn)發(fā)給目的客戶機(jī)。2)群發(fā)消息:在日常使用中經(jīng)常需要向多個(gè)好友發(fā)送通知,如果要進(jìn)行群發(fā)消息,首先先右擊好友列表中的好友條目,在彈出菜單中點(diǎn)擊“添加到多人聊天”,便可以將該好友加入到多人群發(fā)列表中。點(diǎn)擊主界面下方的“群發(fā)”按鈕便可打開群發(fā)消息界面。群發(fā)消息是輸入框中的內(nèi)容分別發(fā)送給群發(fā)列表中的每一個(gè)好友。
3 系統(tǒng)出錯(cuò)及處理方法
系統(tǒng)出錯(cuò)信息主要有兩個(gè)部分,一是本系統(tǒng)的錯(cuò)誤信息,二是數(shù)據(jù)庫錯(cuò)誤信息。系統(tǒng)的錯(cuò)誤信息將以統(tǒng)一的面貌表現(xiàn)出來,采用Windows提示信息方式。
系統(tǒng)的出錯(cuò)及處理方法分為以下幾類:
1)程序錯(cuò)誤:此類錯(cuò)誤屬于程序設(shè)計(jì)時(shí)由于設(shè)計(jì)人員出錯(cuò)產(chǎn)生的錯(cuò)誤,這種錯(cuò)誤一般是無法更改的,需由設(shè)計(jì)人員對(duì)程序錯(cuò)誤進(jìn)行修正,在系統(tǒng)調(diào)試時(shí)應(yīng)盡量考慮設(shè)計(jì)管理系統(tǒng)的各種使用情況,將程序錯(cuò)誤的出現(xiàn)盡量減小到最少。
2)網(wǎng)絡(luò)錯(cuò)誤:主要由于擁護(hù)網(wǎng)絡(luò)硬件或軟件配置導(dǎo)致的網(wǎng)絡(luò)錯(cuò)誤,如網(wǎng)絡(luò)中斷,網(wǎng)絡(luò)傳輸?shù)舭裙收希祟惞收蠈?dǎo)致系統(tǒng)無法運(yùn)行,運(yùn)行中突然退出或死機(jī),系統(tǒng)運(yùn)行效率顯著下降等。
3)基本配置錯(cuò)誤:在與數(shù)據(jù)庫建立連接時(shí)必須保證相應(yīng)的應(yīng)用程序的配置正確,由于用戶安裝其他軟件或中途關(guān)機(jī)都有可能造成基本配置的改變,基本配置的改變將導(dǎo)致客戶斷無法與服務(wù)器連通,使系統(tǒng)無法使用,恢復(fù)一般為系統(tǒng)重安裝或由相關(guān)技術(shù)人員對(duì)系統(tǒng)進(jìn)行重新設(shè)置。
4 結(jié)束語
基于局域網(wǎng)的即時(shí)通訊系統(tǒng)已實(shí)現(xiàn)的主要功能模塊有:由注冊(cè)模塊、登錄模塊、聊天模塊、文件傳送模塊。登錄和注冊(cè)模塊通過數(shù)據(jù)庫驗(yàn)證和保存用戶信息;聊天模塊通過服務(wù)器轉(zhuǎn)發(fā)聊天信息,服務(wù)器端根據(jù)消息中目的地址轉(zhuǎn)發(fā)給接收端。文件傳輸模塊使用點(diǎn)對(duì)點(diǎn)的TCP連接,發(fā)送方和接收方經(jīng)過請(qǐng)求和確認(rèn)后直接建立連接,而不用經(jīng)過服務(wù)器。服務(wù)器管理模塊主要是對(duì)服務(wù)器和連接到服務(wù)器的客戶機(jī)管理操作。
參考文獻(xiàn):
[1] 辛福貴.對(duì)幾種即時(shí)通信開發(fā)技術(shù)的研究[M].哈爾濱:黑龍江科技信息出版社,2009:6-20.
[2] 郭春雷.基于Jabber協(xié)議的手機(jī)即時(shí)通訊系統(tǒng)的研究與實(shí)現(xiàn)[D].貴州:貴州大學(xué),2007.
[3] imon C. Covert Channel and Tunneling over the HTTP protocol Detection: GW implementation theoretical design[EB/OL].http://www.gray-world.net/cn/projects/papers/html/ cctde.html,2008-11-22.
[4] ike.D,Schiffman.Libnet.Packet.Assembly.System.Available.at. http://www.packetfactory.net/Projects/Libnet/.2009-06-24.
[5] Mukherjee.B,Heberlein.L.T,Levitt K. N. Network Intrusion Detection[J]. IEEE Network,2000,8(3):26-41.
[6] H.S.Teng,K. Chen,S.C.Lu. Adaptive Real-time Anomaly Detection Using Inductively Generated Sequential Patterns. Research in Security and Privacy[C].2005.
[7] 杜佳榮,馬建生.Java網(wǎng)絡(luò)編程技術(shù)與實(shí)踐[M].北京:清華大學(xué)出版社,2008:120-345.
[8] Risso.F,Degioanni.L. An Architecture for High Performance Network Analysis. Computers and Communications,2001.Proceedings.Sixth IEEE Symposiumon[C].2001.
[9] 任泰明.TCP/IP協(xié)議與網(wǎng)絡(luò)編程[M].西安:西安電子科技大學(xué)出版社,2011:78-102
[10] 沈剛.多服務(wù)器即時(shí)消息系統(tǒng)模型的設(shè)計(jì)與實(shí)現(xiàn) [D].上海:上海師范大學(xué),2004.