摘要:針對當前中小型企業辦公人員對即時通訊軟件要求較低等問題,提出了一種基于Java平臺下的網絡聊天系統的設計與實現方案,對系統進行了整體設計和詳細設計,該系統主要通過Java Socket網絡編程實現通信,具有速度快,高穩定性,占用系統資源少,用戶界面友好等特點。最后該文還介紹了系統設計的關鍵技術,通過這些技術提高了網絡聊天的效率。
關鍵詞:Java;Socket編程;多線程;網絡聊天系統
中圖分類號:TP393文獻標識碼:A文章編號:1009-3044(2009)26-7415-02
The Design of System of Web Chat Based on Java
SHI Tao-tao, GUO Shu, CUI Xiao-peng, LIU Ying
(Department of Computer Science and Technology, China University of Mining and Technology, Xuzhou 221116, China)
Abstract: Based on office staffs’ low level requiring for instant messaging software in the small and medium enterprises.An design and implementation program of web chat has been hold out which is based on Java platform, the system has been overall designed and detailed designed. The system uses Java socket programming to achieve communication, with many characteristics such as high speed, high stability ,occupying less system resources, user-friendly.Finally,the key technologies of the system has been introduced, which has improved the efficiencies of web chat.
Key words: Java; socket programming; multi-threaded; system of web chat
近年來,隨著科學技術的飛速發展,特別是信息技術的突飛猛進,我們已經進入了信息化的時代,計算機以其精確、高效的優勢逐漸滲入到了經濟社會的各個領域,可以說現代社會已離不開計算機了。
對于現在的軟件市場來說,即時通訊軟件占了很大一部分比例,可以說很多的人來上網都是聊天,而且當前很多軟件已經發展得較成熟,然而并不是它們不好,只是它們由于想要用過多花哨的功能和界面來吸引用戶,反而使得很多用戶用不慣甚至找不到想要的工具,特別是對于那些日常工作繁忙的上班族人員。本文開發的網絡聊天軟件正盡可能的向界面友好同時功能明確、簡潔的方向邁進,特別適合中小型企業內部的通知、交流和聯系。
1 系統的開發環境及技術要求
1.1 系統的開發環境
本系統在Windows XP 操作系統下采用MyEclipse 7.0開發環境進行開發,在Java平臺下進行GUI圖形界面設計,并通過Java Socket編程以及多線程技術完成網絡通信。數據存儲方面,采用文件的輸入輸出操作來滿足需求。
1.2 開發技術簡介
Java[1]是一門很優秀的編程語言,具有面向對象、與平臺無關、安全、穩定和多線程等特點,是目前軟件設計中極為健壯的編程語言。Java不僅可以用來開發大型的應用程序,而且特別適合于Internet的應用開發。
Java Socket編程[2],簡單的理解就是兩臺計算機相互通訊數據而已。Java SDK提供一些相對簡單的Api來完成這些工作,Socket就是其中之一。對于Java而言,這些Api存在于java.net 這個包里面。因此只要導入這個包就可以準備網絡編程了。網絡編程的基本模型就是客戶機到服務器模型,即兩個進程之間相互通訊,然后其中一個必須提供一個固定的位置(服務器),而另一個則只需要知道這個固定的位置(客戶端),并去建立兩者之間的聯系,完成數據的通訊就可以了。
多線程[3]是為了同步完成多項任務,不是為了提高運行效率,而是為了提高資源使用效率來提高系統的效率。線程是在同一時間需要完成多項任務的時候實現的。使用線程可以把占據長時間的程序中的任務放到后臺去處理,用戶界面可以更加吸引人,在一些等待的任務實現上如用戶輸入、文件讀寫和網絡收發數據等,可以釋放一些珍貴的資源如內存占用等等。
2 系統設計
2.1 總體設計
網絡聊天系統的總體設計[4]圖如圖1所示。
2.2 系統實現原理[5]
當用戶聊天時,將當前用戶名、聊天對象、聊天內容和是否私聊進行封裝,然后與服務器建立Socket連接,再用對象輸出流包裝Socket的輸出流將聊天信息對象發送給服務器端。
當用戶發送聊天信息時,服務端將會收到客戶端用Socket傳輸過來的聊天信息對象,然后將其強制轉換為Chat對象,并將本次用戶的聊天信息對象添加到聊天對象集Message中,以供所有聊天用戶訪問。
接收用戶的聊天信息是由多線程技術實現的,因為客戶端必須時時關注更新服務器上是否有最新消息,在本程序中設定的是3秒刷新服務器一次,如果間隔時間太短將會增加客戶端與服務器端的通信負擔,而間隔時間長就會讓人感覺沒有時效性,所以經過權衡后認為3秒最佳,因為每個用戶都不可能在3秒內連續發送信息。
每次用戶接收到聊天信息后將會開始分析聊天信息然后將適合自己的信息人性化地顯示在聊天信息界面上。
3 關鍵技術
網絡通信的設計[6]是整個系統設計的第一步,也是系統設計重要組成部分,本系統首先要創建服務器,然后通過多線程實現網絡通信,該部分的主要程序代碼如下:
//////////*創建服務器*//////////
public AppServer()
{ServerFrame sFrame=new ServerFrame();
static Vector u=new Vector(1,1);
static Vector v=new Vector(1,1);
try{
ServerSocket serverSocket = new ServerSocket(1001);
//獲取服務器的主機名和IP地址
InetAddress address = InetAddress.getLocalHost();
sFrame.txtServerName.setText(address.getHostName());
sFrame.txtIP.setText(address.getHostAddress());
sFrame.txtPort.setText(\"1001\");
}catch(IOException e){fail(e,\"不能啟動服務!\");}
sFrame.txtStatus.setText(\"已啟動...\");
this.start(); //啟動線程
}
//////////*監聽客戶的請求*//////////
public void run()
{ try{
while(true)
{Socket client = serverSocket.accept();//監聽并接受客戶的請求
Connection con = new Connection(client,u,v); //支持多線程
} }catch(IOException e){fail(e,\"不能監聽!\");}
}
//////////*處理線程*//////////
class Connection extends Thread
{
protected ObjectInputStream fromClient;//從客戶到服務器
protected PrintStream toClient; //傳到客戶端
public Connection(Socket client,Vector u,Vector c)
{
protected SocketnetClient = client;
VectoruserOnline=u;
VectoruserChat=c;
//發生雙向通信
fromClient = new ObjectInputStream(netClient.getInputStream());//檢索客戶輸入
toClient = new PrintStream(netClient.getOutputStream());//服務器寫到客戶
this.start();//啟動線程
}
4 結束語
本文介紹了利用java技術開發的網絡聊天系統,著重研究并實現了網絡應用部分。根據實現的情況來看,具有較友好的聊天界面生成效果以及流暢的網絡通信效果,基本滿足了結構化、界面友好、速度快、安全性以及穩定性等特點。可以推廣到中小型企業使用。
參考文獻:
[1] 孫一林.Java語言高級教程[M].北京:清華大學出版社,2002.
[2] Calvert K L.Java TCP/IP Socket編程[M].2版.北京:機械工業出版社,2009.
[3] 史斌星,史佳.Java基礎編程貫通教程[M].北京:清華大學出版社,2003.
[4] 張虹,姜淑娟,劉迎春,等.軟件工程與軟件開發工具[M].北京:清華大學出版社,2004.
[5] 林濤.計算機網絡應用編程技術[M].北京:人民郵電出版社,2006.
[6] 梁普選.Java程序設計與網絡編程[M].北京:清華大學出版社,2007.