魏明軍 劉美璠
摘要:該文討論了基于局域網(wǎng)的即時通訊系統(tǒng)。首先分析了即時通訊系統(tǒng)的構(gòu)架;其次講解了即時通訊系統(tǒng)主要功能的實(shí)現(xiàn),注冊模塊、登陸模塊、聊天模塊、文件傳輸模塊等;最后給出了系統(tǒng)出錯及其處理方法。
關(guān)鍵詞:及時通訊;局域網(wǎng);多服務(wù)器
中圖分類號:TP393 文獻(xiàn)標(biāo)識碼:A 文章編號: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
即時通訊(Instant Messenger,簡稱IM)[1]是一種基于局域網(wǎng)或者Internet應(yīng)用的實(shí)時交互方式,即時通訊的迅速發(fā)展正在急劇地改變?nèi)藗兺ㄓ?、協(xié)作和娛樂的方式。
1 系統(tǒng)架構(gòu)分析
局域網(wǎng)即時通信軟件總體功能劃分為客戶端和服務(wù)器端[2]。首先,啟動服務(wù)器設(shè)置服務(wù)器的網(wǎng)絡(luò)參數(shù)(IP和通訊端口),接著啟動客戶端,設(shè)置網(wǎng)絡(luò)參數(shù)登錄服務(wù)器,待服務(wù)器連接成功,注冊用戶,用戶登錄,添加好友,與好友通訊。在通訊過程中若與服務(wù)器的連接斷開,客戶端可以重新登錄局域網(wǎng)內(nèi)部的服務(wù)器,局域網(wǎng)內(nèi)的客戶端可以繼續(xù)進(jìn)行即時通訊。服務(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)的主要功能。傳送消息使用簡單快捷的UDP協(xié)議[8]。在數(shù)據(jù)庫方面,采用Java提供的JDBC技術(shù)連接和操作數(shù)據(jù)庫。
1)服務(wù)器端的處理過程:啟動服務(wù)器后,首先啟動連接線程用于接收客戶端的連接請求,服務(wù)器端綁定指定的TCP端口,監(jiān)聽該端口的連接請求,接收到客戶端的請求后便另外生成一個Socket[10],用于與該客戶端進(jìn)行通信,并將用戶相關(guān)信息包括該用戶的Socket保存在服務(wù)器端,并將新用戶的信息發(fā)送給其他所有在線的客戶端。然后啟動通信線程用于接收、轉(zhuǎn)發(fā)客戶端的消息,通信線程使用UDP協(xié)議,綁定一個UDP端口,該UDP端口接收到一個UDP報(bào)文后,讀取報(bào)文中的內(nèi)容并判斷報(bào)文的類型,將該報(bào)文轉(zhuǎn)發(fā)給客戶端。服務(wù)器端還需要啟動一個控制線程,該控制線程用于與客戶端傳遞控制信息,包括客戶端退出消息,傳送文件請求,傳送文件確認(rèn)以及傳送文件拒絕等消息。該線程同樣適用UDP協(xié)議,根據(jù)接收到不同類型的消息作出響應(yīng)。
2)客戶端的處理過程:客戶端啟動之后會打開用戶登錄界面,如果用戶尚未注冊,點(diǎn)擊登錄界面中的“注冊”按鈕打開用戶注冊界面,在用戶注冊界面中輸入用戶名密碼等相關(guān)信息,點(diǎn)擊“確定”按鈕,客戶端會連接數(shù)據(jù)庫判斷用戶輸入的信息是否正確,如果輸入正確則注冊成功,輸入錯誤提示注冊失敗。如果用戶已經(jīng)注冊過,便可以在登錄界面輸入用戶名密碼和服務(wù)器端的IP地址與服務(wù)器建立連接,建立連接后客戶端會將用戶的相關(guān)信息發(fā)送給服務(wù)器端。登錄成功后顯示軟件的主界面。
2 系統(tǒng)主要功能的實(shí)現(xiàn)
2.1 注冊模塊
用戶運(yùn)行客戶端程序,配置服務(wù)器參數(shù),測試與服務(wù)器連接是否成功,連接成功后,新用戶點(diǎn)擊注冊按鈕后,按照提示輸入用戶名(用戶檢測是否已經(jīng)注冊)、密碼、確認(rèn)密碼。如果用戶名沒有重復(fù),則把用戶信息存入服務(wù)器端的數(shù)據(jù)庫的用戶信息表中,流程圖如圖1所示。
2.2 用戶登錄
用戶運(yùn)行客戶端程序,首先要配置服務(wù)器參數(shù),測試與服務(wù)器連接是否成功,連接成功后,用戶點(diǎn)擊登錄按鈕后,按照提示輸入用戶名及其密碼,如果用戶名及密碼與服務(wù)器端數(shù)據(jù)庫的用戶名及密碼相匹配,成功登錄到服務(wù)器。配置服務(wù)器的地址和端口成功后,已經(jīng)注冊的用戶在客戶端用戶名和密碼表示。當(dāng)用戶成功登錄系統(tǒng)后,進(jìn)入系統(tǒng)主界面。主界面的好友列表中顯示所有當(dāng)前在線的用戶,點(diǎn)擊好友項(xiàng)便可打開一對一的聊天窗口,在聊天窗口的下方輸入信息,點(diǎn)擊“發(fā)送”按鈕將信息發(fā)送給服務(wù)器端。服務(wù)器端的通信線程接收到該信息后,根據(jù)信息的目的地址將其轉(zhuǎn)發(fā)給目的端。用戶可以將好友加入群發(fā)列表以發(fā)送消息給多個好友,流程圖如圖2所示。
2.3 聊天模塊
1)點(diǎn)對點(diǎn)聊天:主界面中的好友列表顯示當(dāng)前在線的好友,點(diǎn)擊好友條目,彈出聊天窗口,用戶在聊天窗口下方輸入聊天信息,點(diǎn)擊“發(fā)送按鈕”后,軟件將用戶輸入信息和當(dāng)前聊天好友相關(guān)信息封裝成一個Message類的對象,并將該Message對象type設(shè)置成“通信消息”,然后將信息發(fā)送給服務(wù)器端,服務(wù)器端接受到后根據(jù)信息類型和目的地址將其轉(zhuǎn)發(fā)給目的客戶機(jī)。2)群發(fā)消息:在日常使用中經(jīng)常需要向多個好友發(fā)送通知,如果要進(jìn)行群發(fā)消息,首先先右擊好友列表中的好友條目,在彈出菜單中點(diǎn)擊“添加到多人聊天”,便可以將該好友加入到多人群發(fā)列表中。點(diǎn)擊主界面下方的“群發(fā)”按鈕便可打開群發(fā)消息界面。群發(fā)消息是輸入框中的內(nèi)容分別發(fā)送給群發(fā)列表中的每一個好友。
3 系統(tǒng)出錯及處理方法
系統(tǒng)出錯信息主要有兩個部分,一是本系統(tǒng)的錯誤信息,二是數(shù)據(jù)庫錯誤信息。系統(tǒng)的錯誤信息將以統(tǒng)一的面貌表現(xiàn)出來,采用Windows提示信息方式。
系統(tǒng)的出錯及處理方法分為以下幾類:
1)程序錯誤:此類錯誤屬于程序設(shè)計(jì)時由于設(shè)計(jì)人員出錯產(chǎn)生的錯誤,這種錯誤一般是無法更改的,需由設(shè)計(jì)人員對程序錯誤進(jìn)行修正,在系統(tǒng)調(diào)試時應(yīng)盡量考慮設(shè)計(jì)管理系統(tǒng)的各種使用情況,將程序錯誤的出現(xiàn)盡量減小到最少。
2)網(wǎng)絡(luò)錯誤:主要由于擁護(hù)網(wǎng)絡(luò)硬件或軟件配置導(dǎo)致的網(wǎng)絡(luò)錯誤,如網(wǎng)絡(luò)中斷,網(wǎng)絡(luò)傳輸?shù)舭裙收?,此類故障將?dǎo)致系統(tǒng)無法運(yùn)行,運(yùn)行中突然退出或死機(jī),系統(tǒng)運(yùn)行效率顯著下降等。
3)基本配置錯誤:在與數(shù)據(jù)庫建立連接時必須保證相應(yīng)的應(yīng)用程序的配置正確,由于用戶安裝其他軟件或中途關(guān)機(jī)都有可能造成基本配置的改變,基本配置的改變將導(dǎo)致客戶斷無法與服務(wù)器連通,使系統(tǒng)無法使用,恢復(fù)一般為系統(tǒng)重安裝或由相關(guān)技術(shù)人員對系統(tǒng)進(jìn)行重新設(shè)置。
4 結(jié)束語
基于局域網(wǎng)的即時通訊系統(tǒng)已實(shí)現(xiàn)的主要功能模塊有:由注冊模塊、登錄模塊、聊天模塊、文件傳送模塊。登錄和注冊模塊通過數(shù)據(jù)庫驗(yàn)證和保存用戶信息;聊天模塊通過服務(wù)器轉(zhuǎn)發(fā)聊天信息,服務(wù)器端根據(jù)消息中目的地址轉(zhuǎn)發(fā)給接收端。文件傳輸模塊使用點(diǎn)對點(diǎn)的TCP連接,發(fā)送方和接收方經(jīng)過請求和確認(rèn)后直接建立連接,而不用經(jīng)過服務(wù)器。服務(wù)器管理模塊主要是對服務(wù)器和連接到服務(wù)器的客戶機(jī)管理操作。
參考文獻(xiàn):
[1] 辛福貴.對幾種即時通信開發(fā)技術(shù)的研究[M].哈爾濱:黑龍江科技信息出版社,2009:6-20.
[2] 郭春雷.基于Jabber協(xié)議的手機(jī)即時通訊系統(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ù)器即時消息系統(tǒng)模型的設(shè)計(jì)與實(shí)現(xiàn) [D].上海:上海師范大學(xué),2004.