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

代碼片段和文件信息
import?java.io.*;
import?java.net.*;
import?java.util.*;
/**
?*?
?*?title:?HappyChat聊天系統(tǒng)服務(wù)器程序
?*?
?*?
?*?Description:?聊天服務(wù)器
?*?
?*?
?*?Copyright:?Copyright?(c)?2006
?*?
?*?
?*?Filename:?AppServer.java
?*?
?*?創(chuàng)建服務(wù)器
?*?
?*?@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);
/**
?*?創(chuàng)建服務(wù)器?啟動(dòng)服務(wù)監(jiān)聽(tīng)1001端口
?*?
?*/
public?AppServer()?{
sframe?=?new?Serverframe();
try?{
serverSocket?=?new?ServerSocket(1001);
//?獲取服務(wù)器的主機(jī)名和IP地址
InetAddress?address?=?InetAddress.getLocalHost();
sframe.txtServerName.setText(address.getHostName());
sframe.txtIP.setText(address.getHostAddress());
sframe.txtPort.setText(“1001“);
}?catch?(IOException?e)?{
fail(e?“不能啟動(dòng)服務(wù)!“);
}
sframe.txtStatus.setText(“已啟動(dòng)...“);
this.start();?//?啟動(dòng)線(xiàn)程
}
/**
?*?退出服務(wù)器
?*?
?*?@param?e
?*????????????異常
?*?@param?str
?*????????????退出信息
?*/
public?static?void?fail(Exception?e?String?str)?{
System.out.println(str?+?“?。“?+?e);
}
/**
?*?監(jiān)聽(tīng)客戶(hù)的請(qǐng)求,當(dāng)有用戶(hù)請(qǐng)求時(shí)創(chuàng)建?Connection線(xiàn)程
?*/
public?void?run()?{
try?{
while?(true)?{
//?監(jiān)聽(tīng)并接受客戶(hù)的請(qǐng)求
Socket?client?=?serverSocket.accept();
new?Connection(sframe?client?userOnline?v);?//?支持多線(xiàn)程
//?System.out.println(“userLength:“+userLength);
}
}?catch?(IOException?e)?{
fail(e?“不能監(jiān)聽(tīng)!“);
}
}
/**
?*?啟動(dòng)服務(wù)器
?*/
public?static?void?main(String?args[])?{
new?AppServer();
}
}
?屬性????????????大小?????日期????時(shí)間???名稱(chēng)
-----------?---------??----------?-----??----
?????文件????1048576??2008-04-18?06:15??Java聊天室程序畢業(yè)設(shè)計(jì)\Java聊天室程序Sql?Server2000數(shù)據(jù)版本\Data\chat_Data.MDF
?????文件????1048576??2008-04-18?06:15??Java聊天室程序畢業(yè)設(shè)計(jì)\Java聊天室程序Sql?Server2000數(shù)據(jù)版本\Data\chat_Log.LDF
?????文件????????429??2008-04-22?21:24??Java聊天室程序畢業(yè)設(shè)計(jì)\Java聊天室程序Sql?Server2000數(shù)據(jù)版本\liaotian\.classpath
?????文件????????384??2008-04-22?21:24??Java聊天室程序畢業(yè)設(shè)計(jì)\Java聊天室程序Sql?Server2000數(shù)據(jù)版本\liaotian\.project
?????文件????????621??2008-04-22?21:24??Java聊天室程序畢業(yè)設(shè)計(jì)\Java聊天室程序Sql?Server2000數(shù)據(jù)版本\liaotian\aaa_message.txt
?????文件???????2355??2008-04-22?21:24??Java聊天室程序畢業(yè)設(shè)計(jì)\Java聊天室程序Sql?Server2000數(shù)據(jù)版本\liaotian\AppServer.class
?????文件???????1765??2008-04-22?21:24??Java聊天室程序畢業(yè)設(shè)計(jì)\Java聊天室程序Sql?Server2000數(shù)據(jù)版本\liaotian\AppServer.java
?????文件?????????33??2008-04-22?21:24??Java聊天室程序畢業(yè)設(shè)計(jì)\Java聊天室程序Sql?Server2000數(shù)據(jù)版本\liaotian\badword.txt
?????文件????????658??2008-04-22?21:24??Java聊天室程序畢業(yè)設(shè)計(jì)\Java聊天室程序Sql?Server2000數(shù)據(jù)版本\liaotian\ccc_message.txt
?????文件?????947570??2008-04-22?21:24??Java聊天室程序畢業(yè)設(shè)計(jì)\Java聊天室程序Sql?Server2000數(shù)據(jù)版本\liaotian\Champicons?Icon?19.ico
?????文件????????450??2008-04-22?21:24??Java聊天室程序畢業(yè)設(shè)計(jì)\Java聊天室程序Sql?Server2000數(shù)據(jù)版本\liaotian\Chat.class
?????文件????????659??2008-04-22?21:24??Java聊天室程序畢業(yè)設(shè)計(jì)\Java聊天室程序Sql?Server2000數(shù)據(jù)版本\liaotian\Chat.java
?????文件????????403??2008-04-22?21:24??Java聊天室程序畢業(yè)設(shè)計(jì)\Java聊天室程序Sql?Server2000數(shù)據(jù)版本\liaotian\ChatClient.class
?????文件????????421??2008-04-22?21:24??Java聊天室程序畢業(yè)設(shè)計(jì)\Java聊天室程序Sql?Server2000數(shù)據(jù)版本\liaotian\ChatClient.java
?????文件????????697??2008-04-28?20:49??Java聊天室程序畢業(yè)設(shè)計(jì)\Java聊天室程序Sql?Server2000數(shù)據(jù)版本\liaotian\ChatRoom$1.class
?????文件????????660??2008-04-28?20:49??Java聊天室程序畢業(yè)設(shè)計(jì)\Java聊天室程序Sql?Server2000數(shù)據(jù)版本\liaotian\ChatRoom$2.class
?????文件????????660??2008-04-28?20:49??Java聊天室程序畢業(yè)設(shè)計(jì)\Java聊天室程序Sql?Server2000數(shù)據(jù)版本\liaotian\ChatRoom$3.class
?????文件????????660??2008-04-28?20:49??Java聊天室程序畢業(yè)設(shè)計(jì)\Java聊天室程序Sql?Server2000數(shù)據(jù)版本\liaotian\ChatRoom$4.class
?????文件????????660??2008-04-28?20:49??Java聊天室程序畢業(yè)設(shè)計(jì)\Java聊天室程序Sql?Server2000數(shù)據(jù)版本\liaotian\ChatRoom$5.class
?????文件????????672??2008-04-28?20:49??Java聊天室程序畢業(yè)設(shè)計(jì)\Java聊天室程序Sql?Server2000數(shù)據(jù)版本\liaotian\ChatRoom$6.class
?????文件????????672??2008-04-28?20:49??Java聊天室程序畢業(yè)設(shè)計(jì)\Java聊天室程序Sql?Server2000數(shù)據(jù)版本\liaotian\ChatRoom$7.class
?????文件????????672??2008-04-28?20:49??Java聊天室程序畢業(yè)設(shè)計(jì)\Java聊天室程序Sql?Server2000數(shù)據(jù)版本\liaotian\ChatRoom$8.class
?????文件????????585??2008-04-28?20:49??Java聊天室程序畢業(yè)設(shè)計(jì)\Java聊天室程序Sql?Server2000數(shù)據(jù)版本\liaotian\ChatRoom$Windowclose.class
?????文件??????15995??2008-04-28?20:49??Java聊天室程序畢業(yè)設(shè)計(jì)\Java聊天室程序Sql?Server2000數(shù)據(jù)版本\liaotian\ChatRoom.class
?????文件??????20325??2008-04-28?20:49??Java聊天室程序畢業(yè)設(shè)計(jì)\Java聊天室程序Sql?Server2000數(shù)據(jù)版本\liaotian\ChatRoom.java
?????文件????????342??2008-04-22?21:24??Java聊天室程序畢業(yè)設(shè)計(jì)\Java聊天室程序Sql?Server2000數(shù)據(jù)版本\liaotian\chenmin_message.txt
?????文件?????????22??2008-04-22?21:24??Java聊天室程序畢業(yè)設(shè)計(jì)\Java聊天室程序Sql?Server2000數(shù)據(jù)版本\liaotian\client.bat
?????文件????????597??2008-04-22?21:24??Java聊天室程序畢業(yè)設(shè)計(jì)\Java聊天室程序Sql?Server2000數(shù)據(jù)版本\liaotian\Clock$1.class
?????文件???????5034??2008-04-22?21:24??Java聊天室程序畢業(yè)設(shè)計(jì)\Java聊天室程序Sql?Server2000數(shù)據(jù)版本\liaotian\Clock.class
?????文件???????1846??2008-04-22?21:24??Java聊天室程序畢業(yè)設(shè)計(jì)\Java聊天室程序Sql?Server2000數(shù)據(jù)版本\liaotian\CLOCK.ICO
............此處省略335個(gè)文件信息
評(píng)論
共有 條評(píng)論