王小瓊 陳得友
摘要:當前中國的互聯網技術已經進入了一個飛速發展的時期,即時通訊成為了網絡通信工具的主流。本論文就是模擬QQ聊天軟件,開發一個包括文字聊天、文件傳輸等功能的聊天軟件。系統采用C/S架構,基于.NET平臺開發。由服務器端和客戶端程序組成,采用TCP/IP通信協議,使用XML對通信報文進行封裝,便于應用程序API調用,組裝,解析XML報文。主要完成文字聊天、文件傳輸、服務器模塊的設計任務。通過運行、測試與分析,該多功能聊天軟件運行穩定、可靠,具有一定的實用價值。
關鍵詞:聊天軟件;文字聊天;文件傳輸;C#;XML
一、研究的意義
21世紀是信息的時代,隨著互聯網技術的發展,信息在傳遞方面也有了嶄新的一面。現今聊天軟件成為信息傳遞最為廣泛的應用工具,它發揮了即時性通信的特點,可以讓用戶在第一時間內得到信息的交流,它不僅可以讓用戶進行文字聊天,而且還增添語音、視頻功能。這樣可以讓網上的好友身臨其境的面對面的聊天,讓彼此之間更為深入的了解。人性化的設計讓每個用戶都可以得心應手的使用,從而獲得更多人的青睞。Internet的出現連通了整個世界,而聊天軟件的出現則連通了每一位網上的用戶。
二、需求分析
此次開發的網絡聊天工具可作為企業局域網的交流工具使用,通信的安全性不是很高,但要求信息的響應速度要較快,讓用戶充分享受到網絡即時消息的方便和快捷。本聊天工具由服務器端程序和客戶端程序兩部分組成,整體采用.NET平臺開發,采用TCP/IP通信協議,使用XML對通信報文進行封裝,以便于應用程序API調用,組裝和解析XML報文。服務器是可以進行監聽,記錄客戶端請求和驗證客戶端身份的合法性,并提供XML消息中轉服務;客戶端程序面向實際用戶,它有必要的界面的按鈕,向用戶提供網絡即時消息的功能。
三、總體設計
(一)多線程設計
服務器需要和多個客戶端同時進行通信,這就是服務器端的多線程。一旦服務器發現一個新的客戶端與之建立了連接,就馬上新建一個線程與客戶端進行通信。用多線程的好處在于可以同時處理多個通信連接,不會出于由于數據排隊而發生的延遲或者丟失,可以很好利用系統的性能。
客戶端能夠完成信息的接收和發送操作,這與服務器的多線程概念不同,可以采用循環等待的方法來實現客戶端。利用循環等待的方式,客戶端首先接收用戶輸入的內容并將它們發送到服務器端,然后接收來自服務器端的信息,將其返回給客戶端的用戶。
(二)數據庫的設計
本設計模擬的企業局域網架構,所以數據庫表主要用來存放部門信息和用戶的注冊信息,可利用兩張表來分別存放部門信息和用戶信息,用戶可通過服務器來查看在線用戶的個人信息。
(三)服務器的設計
主服務器實現了服務器的多線程,服務器端有一個進程(或多個進程)在指定的端口等待客戶的連接信息。一時連接成功,就可以按設計的數據交換方法和格式進行數據傳輸。客戶端只在需要的時候向服務端發出連接請求。
登陸認證服務是對試圖登陸的客戶端進行權限驗證。驗證過程為:服務器獲得客戶端發送來的用戶名和密碼,然后查詢數據庫的相應的用戶列表,如果該用戶不存在或用戶名與密碼不匹配服務器將驗證失敗的結果通過XMPP協議發還給客戶端,驗證過程終止。如果驗證通過,登陸驗證服務會將表中的用戶狀態由離線變為在線,然后將驗證成功的結果發還給客戶端。
(四)客戶端的設計
用戶完成登錄后, 客戶端與服務器端建立連接。連接建立成功后,客戶向服務器請求讀取好友名單;服務器收到該請求,開始從數據庫讀取好友資料,向客戶端發送這些信息;客戶收到服務器消息后,在主窗口顯示好友。
客戶可以在客戶端查看好友信息,客戶端向服務器發送查詢好友信息的請求,然后服務器查詢數據庫,接著將查詢得到的結果組合成XMPP協議的XML流返回給客戶端。
(五)文本通信功能設計
一對一:在本設計中文本通信功能采用由服務器中轉,考慮到客戶在登陸系統時就跟服務器建立了TCP連接,而且在整個系統使用中客戶與服務器之間除了一些必要的控制信息及好友查詢等信息要進行通信外,TCP連接是處于空閑狀態的,所以可以利用服務器中轉完成客戶間的文本通信。
一對多:此功能用于會議室聊天,具有一個會議室的建立,會議室屬性的設定等。一個用戶建立會議室后,服務器向所有在線用戶發送此會議室的信息,其他用戶就可以在主界面看到此會議室的消息, 只要知道此會議室的密碼,便能加入此會議室聊天。
(六)文件傳輸
本設計中,文件傳輸采用的是P2P通信。P2P通信的特點是通信的雙方通信前借助XMPP服務器建立TCP連接,之后雙方就進行與服務器無關的點對點通信,直到通信結束。整個過程中,服務器只起了一個輔助與管理作用,真正的數據通信與服務器無關。
四、結論
本論文所設計的即時通訊客戶系統,主要功能是能夠完成服務器與客戶端之間的連接,并完成客戶端用戶之間的即時通訊,軟件主要包括以下幾個功能:用戶登錄和注冊管理;好友信息查詢;即時文本消息的互相傳送(一對一文本傳輸和一對多文本傳輸);文件的點對點傳輸等。
在完成這些功能的同時,本文主要解決了一下幾個方面的關鍵問題:系統采用了傳統的客戶端、服務器網絡組織模式,并且設計了基于中心服務器模式的P2P客戶端,在客戶端與服務器建立連接完成以后,通訊在用戶與好友間直接點到點的連接與通信,從而大大減輕了服務器端得負荷,也保證了可靠的文件傳輸機制,客戶端的設計中還采用服務器連接中轉的方案進行文本消息的傳送。
參考文獻:
[1] 張青,郭亞萍.C#編程思想與實踐[M].北京:冶金工業出版社,2005
[2] 陳明.實用軟件工程基礎[M].北京:清華大學出版社,2002
[3] 黃德志,湯慶恩.C#程序設計實用教程[M].北京:冶金工業出版社,2002
[4] 王敏.C#線程參考手冊[M].北京:清華大學出版社,2003
作者簡介:王小瓊(1981-),女,碩士研究生,研究方向:軟件工程。
陳得友(1979-),男(漢族),河南信陽人,大學本科,副教授,主要研究領域為軟件技術、高等教育。