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