資源簡(jiǎn)介
自己編寫的,實(shí)現(xiàn)的功能及特點(diǎn)如下:1、基本功能:實(shí)現(xiàn)服務(wù)器監(jiān)聽(tīng),客戶端連接,可進(jìn)行多人會(huì)話的C/S聊天室。2、服務(wù)器特點(diǎn):1)實(shí)現(xiàn)GUI界面,可選擇端口運(yùn)行或關(guān)閉服務(wù)器,可設(shè)置最大連接數(shù) 2)在GUI記錄運(yùn)行日志,同時(shí)日志被保存在log文件中 3)顯示在線用戶,可以強(qiáng)制任意用戶下線 4)可發(fā)送系統(tǒng)消息給所有在線用戶3、客戶端特點(diǎn):1)可使用一個(gè)用戶名登錄服務(wù)器,登錄之后進(jìn)入聊天室界面 2)顯示在線用戶列表,接收其他用戶及系統(tǒng)發(fā)送的消息 3)可對(duì)輸入文字進(jìn)行字體顏色編輯,可插入圖片 4)可選擇某個(gè)在線用戶單獨(dú)聊天

代碼片段和文件信息
package?chat.client;
import?java.awt.*;
import?java.awt.event.*;
import?javax.swing.*;
import?java.io.*;
import?java.net.*;
/**
?*聊天室客戶端主程序
?*這是運(yùn)行聊天室客戶端程序的入口
?*/
public?class?Client?implements?ActionListener{
private?LogonPane?logonPane;//登錄界面
private?ClientModel?client;//客戶端數(shù)據(jù)模型
private?ClientUI?clientUI;//客戶端聊天界面
private?JButton?enterButtonexitButton;//登錄按鈕
/**
?*登錄容器,本程序的設(shè)計(jì)是將登錄窗口和聊天窗口分別采用兩個(gè)Jframe盛放
?*當(dāng)?shù)卿洺晒r(shí),登錄窗口隱藏,顯示聊天容器,當(dāng)意外斷開(kāi)連接時(shí),再次顯示
?*登錄窗口以便重新登錄。所以有必要設(shè)置一個(gè)logonframe指針。
?*/
private?Jframe?logonframe;
/**
?*構(gòu)造方法,用于創(chuàng)建登錄界面
?*
?*
?*/
public?Client()?{
logonframe=new?Jframe(“登錄“);
//將登錄界面各元素加入登錄窗口
Container?contentPane=logonframe.getContentPane();
logonPane=new?LogonPane();
enterButton=new?JButton(“登錄“);
exitButton=new?JButton(“退出“);
logonPane.setRelatedButton(enterButton);
enterButton.addActionListener(this);
exitButton.addActionListener(this);
JPanel?controlPane=new?JPanel();
controlPane.add(enterButton);
controlPane.add(exitButton);
contentPane.add(logonPaneBorderLayout.CENTER);
contentPane.add(controlPaneBorderLayout.SOUTH);
}
/**
?*?Method?main
?*
?*
?*?@param?args
?*
?*/
public?static?void?main(String[]?args)?{
//?TODO:?在這添加你的代碼
try{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}catch(Exception?e){
e.printStackTrace();
}
createAndShowGUI();
}
/**
?*按鈕事件處理
?*此事件源包括“登錄“、“退出“兩個(gè)按鈕。
?*/
public?void?actionPerformed(ActionEvent?e)?{
//?“登錄“按鈕的事件處理,此過(guò)程包括連接服務(wù)器,創(chuàng)建聊天界面以及各種異常處理
if(e.getSource()==enterButton){
String?ip=logonPane.getIP();
String?name=logonPane.getName();
int?port;
try{
port=logonPane.getPort();
}catch(NumberFormatException?ne){//非數(shù)字字符在端口一欄
JOptionPane.showMessageDialog(logonframene.getMessage());
return;
}
try{
client=new?ClientModel(ipport);
}catch(java.net.UnknownHostException?ue){//ip地址出錯(cuò)
JOptionPane.showMessageDialog(logonframe“不可知的服務(wù)器:“+ue.getMessage());
return;
}catch(IOException?ie){
JOptionPane.showMessageDialog(logonframeie.getMessage());
return;
}
boolean?valid;
try{
valid=client.validate(name);
}catch(IOException?ie){
JOptionPane.showMessageDialog(logonframe“服務(wù)器連接已滿,請(qǐng)稍后重試!“);
return;
}
if(!valid){
JOptionPane.showMessageDialog(logonframe“無(wú)效或已經(jīng)被使用的名字:“+name);
return;
}else{
clientUI=new?ClientUI(client){
protected?void?doWhenStop(){
JOptionPane.showMessageDialog(clientUI“與服務(wù)器的連接中斷,請(qǐng)重新登錄。“);
clientUI.dispose();
logonframe.show();
}
};
clientUI.settitle(client.name+“?的聊天室“);
clientUI.setDefaultCloseOperation(Jframe.DO_NOTHING_ON_CLOSE);
clientUI.setLocationRelativeTo(logonframe);
clientUI.show();
client.start();
logonframe.dispose();
}
}else?if(e.getSource()==exitButton){
System.exit(1);
}
}
/**
?*退出處理,加入一個(gè)選擇對(duì)話框
?*/
p
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件???????4179??2008-06-02?22:20??聊天室\classes\chat\client\ClientModel.java
?????文件???????8875??2008-06-06?16:24??聊天室\classes\chat\client\ClientUI.java
?????文件???????3764??2008-06-13?16:55??聊天室\classes\chat\client\Client.java
????..A.SH.?????????9??2007-03-22?11:24??聊天室\classes\chat\client\_desktop.ini
?????文件???????9456??2008-06-06?16:39??聊天室\classes\chat\client\EditToolBar.java
?????文件???????2364??2008-05-28?08:49??聊天室\classes\chat\client\UDPClientModel.java
?????文件???????2963??2008-06-13?17:23??聊天室\classes\chat\client\UDPClient.java
?????文件???????2129??2008-06-13?17:23??聊天室\classes\chat\client\LogonPane.java
????..A.SH.?????????9??2007-03-22?11:24??聊天室\classes\chat\server\_desktop.ini
?????文件???????8757??2008-06-13?16:34??聊天室\classes\chat\server\ServerModel.java
?????文件???????9481??2008-06-13?17:23??聊天室\classes\chat\server\Server.java
?????文件???????8128??2007-01-19?20:46??聊天室\classes\chat\task\SpringUtilities.java
????..A.SH.?????????9??2007-03-22?11:24??聊天室\classes\chat\task\_desktop.ini
?????文件???????1141??2008-06-02?21:19??聊天室\classes\chat\task\Information.java
?????文件???????3148??2008-06-06?16:21??聊天室\classes\chat\task\Setting.java
?????文件???????1098??2008-06-13?17:15??聊天室\classes\chat\task\Receiver.java
?????文件????????822??2008-06-13?17:17??聊天室\classes\chat\task\Sender.java
?????文件??????21425??2008-06-02?10:24??聊天室\jar\server1.1.jar
?????文件??????36475??2008-06-02?10:41??聊天室\jar\client1.1.jar
?????文件???????4179??2008-06-02?22:20??聊天室\src\client\ClientModel.java
?????文件???????8875??2008-06-06?16:24??聊天室\src\client\ClientUI.java
?????文件???????3764??2008-06-13?16:55??聊天室\src\client\Client.java
????..A.SH.?????????9??2007-03-22?11:24??聊天室\src\client\_desktop.ini
?????文件???????9456??2008-06-06?16:39??聊天室\src\client\EditToolBar.java
?????文件???????2364??2008-05-28?08:49??聊天室\src\client\UDPClientModel.java
?????文件???????2963??2008-06-13?17:23??聊天室\src\client\UDPClient.java
?????文件???????2129??2008-06-13?17:23??聊天室\src\client\LogonPane.java
????..A.SH.?????????9??2007-03-22?11:24??聊天室\src\server\_desktop.ini
?????文件???????8757??2008-06-13?16:34??聊天室\src\server\ServerModel.java
?????文件???????9481??2008-06-13?17:23??聊天室\src\server\Server.java
............此處省略20個(gè)文件信息
評(píng)論
共有 條評(píng)論