資源簡介
java聊天室程序源碼
2 需求分析
2.1 業務需求
1. 與聊天室成員一起聊天。
2. 可以與聊天室成員私聊。
3. 可以改變聊天內容風格。
4. 用戶注冊(含頭像)、登錄。
5. 服務器監控聊天內容。
6. 服務器過濾非法內容。
7. 服務器發送通知。
8. 服務器踢人。
9. 保存服務器日志。
10.保存用戶聊天信息。
2.2 系統功能模塊
2.2.1 服務器端
1.處理用戶注冊
2.處理用戶登錄
3.處理用戶發送信息
4.處理用戶得到信息
5.處理用戶退出
2.2.2 客戶端
1.用戶注冊界面及結果
2.用戶登錄界面及結果
3.用戶發送信息界面及結果
4.用戶得到信息界面及結果
5.用戶退出界面及結果
2.3 性能需求
運行環境:Windows 9x、2000、xp、2003,Linux
必要環境:JDK 1.5 以上
硬件環境:CPU 400MHz以上,內存64MB以上
3.1.2 客戶端結構
ChatClient.java 為客戶端程序啟動類,負責客戶端的啟動和退出。
Login.java 為客戶端程序登錄界面,負責用戶帳號信息的驗證與反饋。
Register.java 為客戶端程序注冊界面,負責用戶帳號信息的注冊驗證與反饋。
ChatRoom.java 為客戶端程序聊天室主界面,負責接收、發送聊天內容與服務器端的Connection.java 親密合作。
Windowclose 為ChatRoom.java的內部類,負責監聽聊天室界面的操作,當用戶退出時返回給服務器信息。
Clock.java 為客戶端程序的一個小程序,實現的一個石英鐘功能。
3. 2 系統實現原理
當用戶聊天時,將當前用戶名、聊天對象、聊天內容、聊天語氣和是否私聊進行封裝,然后與服務器建立Socket連接,再用對象輸出流包裝Socket的輸出流將聊天信息對象發送給服務器端
當用戶發送聊天信息時,服務端將會收到客戶端用Socket傳輸過來的聊天信息對象,然后將其強制轉換為Chat對象,并將本次用戶的聊天信息對象添加到聊天對象集Message中,以供所有聊天用戶訪問。
接收用戶的聊天信息是由多線程技術實現的,因為客戶端必須時時關注更新服務器上是否有最新消息,在本程序中設定的是3秒刷新服務器一次,如果間隔時間太短將會增加客戶端與服務器端的通信負擔,而間隔時間長就會讓人感覺沒有時效性,所以經過權衡后認為3秒最佳,因為每個用戶都不可能在3秒內連續發送信息。
當每次用戶接收到聊天信息后將會開始分析聊天信息然后將適合自己的信息人性化地顯示在聊天信息界面上。
4.1.1 問題陳述
1.接受用戶注冊信息并保存在一個基于文件的對象型數據庫。
2.能夠允許注冊過的用戶登陸聊天界面并可以聊天。
3.能夠接受私聊信息并發送給特定的用戶。
4.服務器運行在自定義的端口上#1001。
5.服務器監控用戶列表和用戶聊天信息(私聊除外)。
6.服務器踢人,發送通知。
7.服務器保存日志。

代碼片段和文件信息
import?java.io.*;
import?java.net.*;
import?java.util.*;
/**
?*?
?*?title:?HappyChat聊天系統服務器程序
?*?
?*?
?*?Description:?聊天服務器
?*?
?*?
?*?Copyright:?Copyright?(c)?2006
?*?
?*?
?*?Filename:?AppServer.java
?*?
?*?創建服務器
?*?
?*?@version?1.0
?*?
?*/
public?class?AppServer?extends?Thread?{
private?ServerSocket?serverSocket;
private?Serverframe?sframe;
private?static?Vector?userOnline?=?new?Vector(1?1);
private?static?Vector?v?=?new?Vector(1?1);
/**
?*?創建服務器?啟動服務監聽1001端口
?*?
?*/
public?AppServer()?{
sframe?=?new?Serverframe();
try?{
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();?//?啟動線程
}
/**
?*?退出服務器
?*?
?*?@param?e
?*????????????異常
?*?@param?str
?*????????????退出信息
?*/
public?static?void?fail(Exception?e?String?str)?{
System.out.println(str?+?“?。“?+?e);
}
/**
?*?監聽客戶的請求,當有用戶請求時創建?Connection線程
?*/
public?void?run()?{
try?{
while?(true)?{
//?監聽并接受客戶的請求
Socket?client?=?serverSocket.accept();
new?Connection(sframe?client?userOnline?v);?//?支持多線程
//?System.out.println(“userLength:“+userLength);
}
}?catch?(IOException?e)?{
fail(e?“不能監聽!“);
}
}
/**
?*?啟動服務器
?*/
public?static?void?main(String?args[])?{
new?AppServer();
}
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????1048576??2008-04-18?06:15??Java聊天室程序畢業設計\Java聊天室程序Sql?Server2000數據版本\Data\chat_Data.MDF
?????文件????1048576??2008-04-18?06:15??Java聊天室程序畢業設計\Java聊天室程序Sql?Server2000數據版本\Data\chat_Log.LDF
?????文件????????429??2008-04-22?21:24??Java聊天室程序畢業設計\Java聊天室程序Sql?Server2000數據版本\liaotian\.classpath
?????文件????????384??2008-04-22?21:24??Java聊天室程序畢業設計\Java聊天室程序Sql?Server2000數據版本\liaotian\.project
?????文件????????621??2008-04-22?21:24??Java聊天室程序畢業設計\Java聊天室程序Sql?Server2000數據版本\liaotian\aaa_message.txt
?????文件???????2355??2008-04-22?21:24??Java聊天室程序畢業設計\Java聊天室程序Sql?Server2000數據版本\liaotian\AppServer.class
?????文件???????1765??2008-04-22?21:24??Java聊天室程序畢業設計\Java聊天室程序Sql?Server2000數據版本\liaotian\AppServer.java
?????文件?????????33??2008-04-22?21:24??Java聊天室程序畢業設計\Java聊天室程序Sql?Server2000數據版本\liaotian\badword.txt
?????文件????????658??2008-04-22?21:24??Java聊天室程序畢業設計\Java聊天室程序Sql?Server2000數據版本\liaotian\ccc_message.txt
?????文件?????947570??2008-04-22?21:24??Java聊天室程序畢業設計\Java聊天室程序Sql?Server2000數據版本\liaotian\Champicons?Icon?19.ico
?????文件????????450??2008-04-22?21:24??Java聊天室程序畢業設計\Java聊天室程序Sql?Server2000數據版本\liaotian\Chat.class
?????文件????????659??2008-04-22?21:24??Java聊天室程序畢業設計\Java聊天室程序Sql?Server2000數據版本\liaotian\Chat.java
?????文件????????403??2008-04-22?21:24??Java聊天室程序畢業設計\Java聊天室程序Sql?Server2000數據版本\liaotian\ChatClient.class
?????文件????????421??2008-04-22?21:24??Java聊天室程序畢業設計\Java聊天室程序Sql?Server2000數據版本\liaotian\ChatClient.java
?????文件????????697??2008-04-28?20:49??Java聊天室程序畢業設計\Java聊天室程序Sql?Server2000數據版本\liaotian\ChatRoom$1.class
?????文件????????660??2008-04-28?20:49??Java聊天室程序畢業設計\Java聊天室程序Sql?Server2000數據版本\liaotian\ChatRoom$2.class
?????文件????????660??2008-04-28?20:49??Java聊天室程序畢業設計\Java聊天室程序Sql?Server2000數據版本\liaotian\ChatRoom$3.class
?????文件????????660??2008-04-28?20:49??Java聊天室程序畢業設計\Java聊天室程序Sql?Server2000數據版本\liaotian\ChatRoom$4.class
?????文件????????660??2008-04-28?20:49??Java聊天室程序畢業設計\Java聊天室程序Sql?Server2000數據版本\liaotian\ChatRoom$5.class
?????文件????????672??2008-04-28?20:49??Java聊天室程序畢業設計\Java聊天室程序Sql?Server2000數據版本\liaotian\ChatRoom$6.class
?????文件????????672??2008-04-28?20:49??Java聊天室程序畢業設計\Java聊天室程序Sql?Server2000數據版本\liaotian\ChatRoom$7.class
?????文件????????672??2008-04-28?20:49??Java聊天室程序畢業設計\Java聊天室程序Sql?Server2000數據版本\liaotian\ChatRoom$8.class
?????文件????????585??2008-04-28?20:49??Java聊天室程序畢業設計\Java聊天室程序Sql?Server2000數據版本\liaotian\ChatRoom$Windowclose.class
?????文件??????15995??2008-04-28?20:49??Java聊天室程序畢業設計\Java聊天室程序Sql?Server2000數據版本\liaotian\ChatRoom.class
?????文件??????20325??2008-04-28?20:49??Java聊天室程序畢業設計\Java聊天室程序Sql?Server2000數據版本\liaotian\ChatRoom.java
?????文件????????342??2008-04-22?21:24??Java聊天室程序畢業設計\Java聊天室程序Sql?Server2000數據版本\liaotian\chenmin_message.txt
?????文件?????????22??2008-04-22?21:24??Java聊天室程序畢業設計\Java聊天室程序Sql?Server2000數據版本\liaotian\client.bat
?????文件????????597??2008-04-22?21:24??Java聊天室程序畢業設計\Java聊天室程序Sql?Server2000數據版本\liaotian\Clock$1.class
?????文件???????5034??2008-04-22?21:24??Java聊天室程序畢業設計\Java聊天室程序Sql?Server2000數據版本\liaotian\Clock.class
?????文件???????1846??2008-04-22?21:24??Java聊天室程序畢業設計\Java聊天室程序Sql?Server2000數據版本\liaotian\CLOCK.ICO
............此處省略335個文件信息
- 上一篇:web端購物車實現包括注冊登錄
- 下一篇:Java語言程序設計(基礎篇)課后習題答案
評論
共有 條評論