文/虞國全
網(wǎng)絡聊天系統(tǒng)設計與應用
文/虞國全
目前,計算機的發(fā)展離不開網(wǎng)絡這一方向,網(wǎng)絡將大大擴展計算機的功能,研究計算機在網(wǎng)絡方面的技術(shù)以及應用,挖掘計算機的網(wǎng)絡潛能,將能夠大大提高我們對計算機的本身的認識,同時也能加深對計算機網(wǎng)絡的認識。根據(jù)當前網(wǎng)絡的需求,網(wǎng)絡聊天越來越受各種網(wǎng)民青睞。因此開發(fā)網(wǎng)絡聊天是相當有必要,而且在網(wǎng)站內(nèi)增加聊天功能,不僅可以提高網(wǎng)站的訪問量,同時可以留著訪客,更重要的是讓訪客透過聊天室實時的互相交流。
本論文是從實際工程應用角度出發(fā),以計算機網(wǎng)絡原理為指導,結(jié)合當前網(wǎng)絡中的一些常用技術(shù)開發(fā)了本聊天室工具,具有聊天室聊天、二人私聊、表情的應用以及請離用戶的功能,主要對當今聊天軟件的發(fā)展情況、與該聊天軟件相關(guān)的各種技術(shù)以及該聊天系統(tǒng)的設計實現(xiàn)做了一個詳細的闡述。
本聊天系統(tǒng)的開發(fā)主要用到了Socket通信,在此基礎上,實現(xiàn)點對點聊天、廣播聊天、一對多聊天,可以運行于任何支持TCP/IP協(xié)議的機器上,用到了多線程的設計,因此線程之間的同步是一大關(guān)鍵之處。由于系統(tǒng)采用C/S (Client/ Server)結(jié)構(gòu),客戶端與客戶端以及客戶端與服務器端需要傳送一些控制消息,因此系統(tǒng)需要自定義一些消息類型,這是該網(wǎng)絡聊天系統(tǒng)的又一大關(guān)鍵之處。
1.硬件要求:安裝了網(wǎng)卡,并連入局域網(wǎng)。
2.軟件要求: Windows98以上的系統(tǒng);安裝了支持Socket通信的TCP/IP或者協(xié)議;JDK1.4以上版本。
如今流行的聊天軟件功能已經(jīng)非常強大,基本上朝著三個大的方向發(fā)展,即個人及時通信,企業(yè)實時通信和娛樂資訊。它的功能主要有:
1.個人文本聊天;
2.個人語音聊天;
3.個人視頻聊天;
4.圖像傳輸;
5.文件傳輸;
6.在線游戲;
7.聊天室聊天;
8.隱身,上線;
9.群聊天;
10.企業(yè)級實時通信。
聊天軟件的發(fā)展方向是三維化,人性化,綜合化。
設計并實現(xiàn)基于Socket的文本聊天程序包括廣播聊天,二人私聊。涉及的內(nèi)容包括用戶登錄,聊天方式的選擇,附帶表情,以及悄悄話選項,管理員身份可以看到私聊的和內(nèi)容。由一個管理員運行ChatRoomServer建立主機服務器,其他用戶運行ChatRoomClient運行客戶端,通過服務器的IP和設置的端口號與之建立連接。在服務器端可以顯示用戶登錄的信息,客戶端可以看見當前在線用戶的人數(shù)和昵稱。在由于開發(fā)目的的原因,所以不采用登錄驗證模式,只要輸入用戶昵稱即可登錄,對惡意刷屏或語言不禮貌者,管理員可以請離該用戶。
該系統(tǒng)網(wǎng)站總體分為四大模塊,分別是:歡迎界面、管理員模塊、用戶管理模塊、聊天模塊。其中歡迎模塊就是開始的歡迎頁面,是全網(wǎng)站的首頁,也是帶領用戶進入本網(wǎng)站的向?qū)В渲邪M入登錄界面和進入注冊界面兩個鏈接。
管理員模塊是管理員進行對網(wǎng)站的管理使用的模塊,有管理員登錄頁面、管理員管理頁面和管理員操作反饋頁面等組成,主要實現(xiàn)對已注冊用戶和在線用戶的管理,通過對用戶的了解確定用戶這冊身份的去與留。這主要通過管理員擁有的對數(shù)據(jù)庫操作的權(quán)限,從而決定是否從數(shù)據(jù)庫內(nèi)將用戶信息刪除以達到踢出用戶的功能。利用網(wǎng)站內(nèi)提供的JavaBean實現(xiàn)和數(shù)據(jù)庫連接,在管理員操作頁面內(nèi)設有動態(tài)delete刪除SQL語句,通過
圖1 用戶E-R關(guān)系
表1 用戶數(shù)據(jù)表屬性設計
用戶模塊主要包括用戶登錄和用戶注冊兩個單元,分別是用來給用戶登錄和用戶注冊使用的頁面。用戶的登錄可以使用已經(jīng)注冊的注冊用戶身份登錄,也可以使用游客身份進行登錄。使用游客身份登錄是不需要注冊的,可以每次使用一個不同的名字,比較自由,但同時也難以在聊天室內(nèi)有個完整的虛擬形象,可以彌補此處就是使用注冊用戶身份,這樣便可以有一個固定的稱呼,可以更好地與聊友們交流。用戶的注冊單元是常規(guī)的注冊,主要包含用戶名、密碼和聯(lián)系方式三項,其中聯(lián)系方式是比較常用的E-mail聯(lián)系方式。注冊的成功與否會有相應的提示。
圖2 服務器結(jié)構(gòu)流程
圖3 客戶端結(jié)構(gòu)流程
已注冊用戶的登錄實現(xiàn)主要通過將用戶的提交用戶名與數(shù)據(jù)庫中的對比,查找是否有該用戶名,使用動態(tài)select選取SQL語句。如果數(shù)據(jù)庫內(nèi)沒有該用戶名,則該用戶顯然尚未注冊,反饋相應信息;如果有該用戶名則繼續(xù)對應用戶提交的密碼與數(shù)據(jù)庫內(nèi)該用戶名項的密碼相對比,結(jié)構(gòu)則允許用戶登錄,并將頁面轉(zhuǎn)到聊天界面,否則提示相應錯誤信息。并同時將登錄成功的用戶的用戶名寫進Application從而在聊天界面的用戶列表里能被顯示出來。游客的登錄則只要判別用戶沒有重復,并合乎用戶的規(guī)范就可以登錄并轉(zhuǎn)到聊天界面了,這里沒有數(shù)據(jù)庫的操作。游客與已注冊用戶有著一樣的使用界面。
由于篇幅原因,部分數(shù)據(jù)庫設計如下。
數(shù)據(jù)庫邏輯結(jié)構(gòu)
因為每個實體都必須轉(zhuǎn)化為一個關(guān)系模式,所以有三個關(guān)系模式,可以將上述E-R簡化為如下關(guān)系模式:
用戶(號碼,昵稱,密碼,性別,頭像號碼,所在ip地址,在線狀態(tài),連接使用的端口號,郵箱,籍貫)
好友(用戶號碼,好友號碼)
聊天記錄(發(fā)送方號碼,接收方號碼,發(fā)送時間,聊天內(nèi)容)
用戶E-R如圖1所示。
根據(jù)關(guān)系模式,可以得到三張表,其中用戶數(shù)據(jù)表的屬性設計見表1。
圖4 客戶端主頁面效果
客戶通過Socket(InetAddress,port)建立與服務器的連接。服務器與客戶都通過構(gòu)造ObjectInputStream,ObjectOutputStream來建立輸入輸出流,然后雙方通過該輸入輸出流來相互傳遞信息,一旦收到客戶方的連接請求,服務器accept()方法返回一個新建的Socket對象??蛻舳巳缓笙蚍掌靼l(fā)送消息,比如文件傳輸?shù)?,服務器收到來自客戶的請求后,針對不同的消息處理請求。如圖3所示。
最終主界面效果如圖4所示。
本系統(tǒng)是典型的C/S架構(gòu),它的優(yōu)點是大部分功能由服務器完成,客戶端簡單易維護,這樣做用戶就更為容易接受。并且占用的系統(tǒng)資源少,提高了性能。缺點是聊天的內(nèi)容沒有儲存,當清屏以后就無法再看到以前的聊天記錄了。日后可以考慮增加日志的功能,把聊天記錄及一些用戶信息存儲在.txt文件或者數(shù)據(jù)庫中,使其有處可查。本聊天系統(tǒng)設計是為軟件開發(fā)人員在局域網(wǎng)中方便交流,減少成本,消除由于交流不同帶來的開發(fā)成本上升,可能部分模塊功能有所不全,對此本人會再加強設計以期全部完成實現(xiàn)。
(作者單位為南昌理工學院計算機系)