資源簡介
這個是我的畢業(yè)設(shè)計,除了很少量的UI設(shè)計外,代碼都是自己寫的,歡迎大家拿去參考,水平有限,請大家多指教。
該系統(tǒng)開發(fā)主要包括一個網(wǎng)絡(luò)聊天服務(wù)器程序和一個網(wǎng)絡(luò)聊天客戶程序兩個方面。前者通過Socket套接字建立服務(wù)器,服務(wù)器能讀取、轉(zhuǎn)發(fā)客戶端發(fā)來信息,并能刷新用戶列表。后者通過與服務(wù)器建立連接,來進(jìn)行客戶端與客戶端的信息交流。其中用到了局域網(wǎng)通信機(jī)制的原理,通過直接繼承Thread類來建立多線程。開發(fā)中利用了計算機(jī)網(wǎng)絡(luò)編程的基本理論知識,如TCP/IP協(xié)議、客戶端/服務(wù)器端模式(Client/Server模式)、網(wǎng)絡(luò)編程的設(shè)計方法等。在網(wǎng)絡(luò)編程中對信息的讀取、發(fā)送,是利用流來實現(xiàn)信息的交換,其中介紹了對實現(xiàn)一個系統(tǒng)的信息流的分析,包含了一些基本的軟件工程的方法。經(jīng)過分析這些情況,該聊天工具采用Eclipse為基本開發(fā)環(huán)境和java語言進(jìn)行編寫,首先可在短時間內(nèi)建立系統(tǒng)應(yīng)用原型,然后,對初始原型系統(tǒng)進(jìn)行不斷修正和改進(jìn),直到形成可行系統(tǒng)。
客戶端采用C/S結(jié)構(gòu),管理端采用B/S的結(jié)構(gòu),用Tomcat 作為服務(wù)器,MySQL作為數(shù)據(jù)庫,還使用到了WindowBuilder開源框架進(jìn)行界面開發(fā)。
主要功能:
客戶端可以實現(xiàn)注冊,即時聊天,相互之間收發(fā)文件,發(fā)送截圖,查看歷史聊天記錄等功能。收發(fā)消息時,可以實現(xiàn)離線接收。
服務(wù)器端應(yīng)當(dāng)建立一個ServerSocket,并且不斷進(jìn)行偵聽是否有客戶端連接或者斷開連接(包括判斷沒有響應(yīng)的連接超時)。服務(wù)器端應(yīng)當(dāng)是一個信息發(fā)送中心,所有客戶端的信息都傳到服務(wù)器端,由服務(wù)器端根據(jù)要求分發(fā)信息。
在后臺管理系統(tǒng),可以到對用戶進(jìn)行增刪改查,查看在線用戶,和踢用戶下線
主要技術(shù):
1、即時通訊原理
首先驗證登陸,如果成功,則建立與服務(wù)端的socket連接,服務(wù)端新開啟一個線程專門為它服務(wù),將打包好的Message發(fā)送給服務(wù)器端,服務(wù)器端根據(jù)Message里面的信息,再將信息轉(zhuǎn)發(fā)給其他用戶。一個標(biāo)準(zhǔn)的C/S模式。
2、Swing技術(shù)
3、Java web
采用B/S的結(jié)構(gòu)實現(xiàn)服務(wù)器端,對用戶和在線用戶進(jìn)行增刪改查,和踢用戶下線,以及開啟服務(wù)器和關(guān)閉服務(wù)器。
說明:
本項目采用mysql做數(shù)據(jù)庫,下載后請先看read_me.txt,按照說明可運行程序。
系統(tǒng)默認(rèn)是單機(jī)情況,如果要進(jìn)行局域網(wǎng)的測試,請點擊登陸窗口下方的設(shè)置,然后輸入服務(wù)端程序所運行機(jī)器的IP。
另外附上我的論文,以便大家更快的了解該項目
我的“java即時聊天系統(tǒng)”是完全可以運行的,很多人根本就是不會設(shè)置eclipse或者 myeclipse,甚至還有些人都分不清java版本的區(qū)別,就在那喊“代碼有錯誤”、“程序 無法運行” ,讓我很無語。在此我不是想說我的代碼寫的有多好,但絕對是沒有錯誤的。
轉(zhuǎn)載請注明出處 thank you
本工程功能完成,完全可以正常運行。對于下方評論說無法運行的,請?zhí)岣咦约旱淖藙菟剑瑢W(xué)習(xí)下基本的mysql與java知識。

代碼片段和文件信息
package?com.im.client.model;
import?java.awt.Color;
import?java.awt.image.BufferedImage;
import?java.io.BufferedOutputStream;
import?java.io.File;
import?java.io.FileOutputStream;
import?java.io.IOException;
import?java.io.InputStream;
import?java.io.objectInputStream;
import?java.io.objectOutputStream;
import?java.net.Socket;
import?java.util.ArrayList;
import?java.util.List;
import?javax.imageio.ImageIO;
import?javax.swing.JFileChooser;
import?javax.swing.JOptionPane;
import?com.im.client.record.MessageRecord;
import?com.im.client.util.Manager;
import?com.im.client.view.IMChat;
import?com.im.client.view.IMFriendList;
import?com.im.client.view.friendsCard.MyFriendPanel;
import?com.im.common.Message;
import?com.im.common.MessageType;
import?com.im.common.User;
public?class?ClientConnToServerThread?extends?Thread?{
private?Socket?socket;
private?IMFriendList?fl;
private?IMChat?chat=null;
private?BufferedOutputStream?bos;
public?ClientConnToServerThread()?{
}
public?ClientConnToServerThread(Socket?s)?{
this.socket?=?s;
}
@Override
public?void?run()?{
while(!isInterrupted()){
try?{
Message?m=(Message)receive();
new?MessageRecord().afterReceive(m);
if(m.getMsgType()==MessageType.message_comm_mes.intValue()){
System.out.println(m.getSenderAccount()+“??發(fā)送給“+m.getReceiverAccount()+“??內(nèi)容:“+m.getContent());
//如果會話窗口已經(jīng)打開
//如果會話窗口未打開,則自動打開窗口
checkChatWindow(m);
chat.showMessage(mnew?Color(00255));
}else?if(m.getMsgType().intValue()==MessageType.message_ret_onLineFriend.intValue()){
List?list=m.getFriends();
fl=Manager.FRIEND_LIST;
MyFriendPanel?mfp=(MyFriendPanel)?fl.getMyFriendPanel();
mfp.updateOnline(list);
}else?if(m.getMsgType().intValue()==MessageType.message_offline){
fl=Manager.FRIEND_LIST;
MyFriendPanel?mfp=(MyFriendPanel)?fl.getMyFriendPanel();
mfp.updateOffline(m.getSenderAccount());
}else?if(m.getMsgType().intValue()==MessageType.message_img){
//如果會話窗口已經(jīng)打開
//如果會話窗口未打開,則自動打開窗口
checkChatWindow(m);
m.setImg(chat.bytesToImage(m.getImageByte()));
chat.showMessage(mnew?Color(00255));
}else?if(m.getMsgType().intValue()==MessageType.message_file){
//接收到的是文件包
checkChatWindow(m);
// String?s=“c:/“;
//請求發(fā)送包
if(m.getState()==2){ ???
????//對話框?是否接收
????int?i=JOptionPane.showConfirmDialog(chat?“確定接收“?+
???? m.getFileName()+“(“?+m.getLength()+“KB)“?“接收文件“JOptionPane.YES_NO_OPTION);
????Integer?sender=m.getReceiverAccount();
???? Integer?getter=m.getSenderAccount();
???? m.setSenderAccount(sender);
???? m.setReceiverAccount(getter);
????//同意就發(fā)送同意接收數(shù)據(jù)包
????if(i==JOptionPane.YES_OPTION){
????
???? //打開保存文件對話框
???? JFileChooser?jfc=new?JFileChooser(“c:/“);
???? jfc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
???? int?mo
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????1591296??2011-07-07?22:00??java聊天系統(tǒng)\畢業(yè)設(shè)計論文.doc
?????文件????????232??2011-05-11?20:51??java聊天系統(tǒng)\程序\IMClient\.classpath
?????文件????????930??2011-03-02?21:31??java聊天系統(tǒng)\程序\IMClient\.myeclipse\profiler\IMClientLogin.xm
?????文件????????384??2011-05-12?18:35??java聊天系統(tǒng)\程序\IMClient\.project
?????文件???????1009??2011-05-11?20:52??java聊天系統(tǒng)\程序\IMClient\bin\beans.xm
?????文件???????7063??2011-05-12?18:35??java聊天系統(tǒng)\程序\IMClient\bin\com\im\client\model\ClientConnToServerThread.class
?????文件???????2272??2011-05-12?18:35??java聊天系統(tǒng)\程序\IMClient\bin\com\im\client\model\IMClientServer.class
?????文件???????2438??2011-05-12?18:35??java聊天系統(tǒng)\程序\IMClient\bin\com\im\client\model\IMClientUserServer.class
?????文件???????2826??2011-05-12?18:35??java聊天系統(tǒng)\程序\IMClient\bin\com\im\client\model\SendFileThread.class
?????文件???????3867??2011-05-12?18:35??java聊天系統(tǒng)\程序\IMClient\bin\com\im\client\record\MessageRecord.class
?????文件???????1674??2011-05-12?21:50??java聊天系統(tǒng)\程序\IMClient\bin\com\im\client\util\DesktopRuner.class
?????文件???????1187??2011-05-12?18:35??java聊天系統(tǒng)\程序\IMClient\bin\com\im\client\util\Manager.class
?????文件???????2459??2011-05-12?18:35??java聊天系統(tǒng)\程序\IMClient\bin\com\im\client\view\friendsCard\FriendHeadPanel$HighLight.class
?????文件???????3836??2011-05-12?18:35??java聊天系統(tǒng)\程序\IMClient\bin\com\im\client\view\friendsCard\FriendHeadPanel.class
?????文件???????1669??2011-05-12?18:35??java聊天系統(tǒng)\程序\IMClient\bin\com\im\client\view\friendsCard\MainListPanel.class
?????文件???????3841??2011-05-12?18:35??java聊天系統(tǒng)\程序\IMClient\bin\com\im\client\view\friendsCard\MyFriendPanel.class
?????文件???????2939??2011-05-12?18:35??java聊天系統(tǒng)\程序\IMClient\bin\com\im\client\view\friendsCard\StrangerPanel.class
?????文件???????1431??2011-05-12?18:35??java聊天系統(tǒng)\程序\IMClient\bin\com\im\client\view\IMChat$1.class
?????文件???????1894??2011-05-12?18:35??java聊天系統(tǒng)\程序\IMClient\bin\com\im\client\view\IMChat$2.class
?????文件???????1850??2011-05-12?18:35??java聊天系統(tǒng)\程序\IMClient\bin\com\im\client\view\IMChat$3.class
?????文件???????2282??2011-05-12?18:35??java聊天系統(tǒng)\程序\IMClient\bin\com\im\client\view\IMChat$4.class
?????文件???????1134??2011-05-12?18:35??java聊天系統(tǒng)\程序\IMClient\bin\com\im\client\view\IMChat$5.class
?????文件???????1342??2011-05-12?18:35??java聊天系統(tǒng)\程序\IMClient\bin\com\im\client\view\IMChat$6.class
?????文件???????2904??2011-05-12?18:35??java聊天系統(tǒng)\程序\IMClient\bin\com\im\client\view\IMChat$7.class
?????文件??????16387??2011-05-12?18:35??java聊天系統(tǒng)\程序\IMClient\bin\com\im\client\view\IMChat.class
?????文件????????759??2011-05-12?21:13??java聊天系統(tǒng)\程序\IMClient\bin\com\im\client\view\IMClientLogin$1.class
?????文件????????756??2011-05-12?21:13??java聊天系統(tǒng)\程序\IMClient\bin\com\im\client\view\IMClientLogin$2.class
?????文件???????2593??2011-05-12?21:13??java聊天系統(tǒng)\程序\IMClient\bin\com\im\client\view\IMClientLogin$3.class
?????文件???????2249??2011-05-12?21:13??java聊天系統(tǒng)\程序\IMClient\bin\com\im\client\view\IMClientLogin$li
?????文件???????1197??2011-05-12?21:13??java聊天系統(tǒng)\程序\IMClient\bin\com\im\client\view\IMClientLogin$MouseAction.class
............此處省略283個文件信息
評論
共有 條評論