資源簡介
1.該資源能夠實現(xiàn)像飛秋,QQ一樣聊天,但是內容很簡單,適合本地測試,初學者可以下載,高手勿擾。
2.采用客戶端和服務端的方式,代碼分包明確,下載后先看使用說明。
3.注意,測試的時候先啟動服務端,再啟動客戶端。
4.采用Socket編程,GUI圖形,事件響應,I/O,多線程。
5.要測試其他端口和IP,可以自行修改。
6.若有什么問題,請聯(lián)系球球:125836941 注明來意
代碼片段和文件信息
package?client;
import?java.awt.BorderLayout;
import?java.awt.event.KeyAdapter;
import?java.awt.event.KeyEvent;
import?java.io.DataInputStream;
import?java.io.DataOutputStream;
import?java.io.IOException;
import?java.net.Socket;
import?javax.swing.JButton;
import?javax.swing.Jframe;
import?javax.swing.JPanel;
import?javax.swing.JTextArea;
import?javax.swing.JTextField;
public?class?Client?{
?????
/**
?*?@param?args
?*/
//?創(chuàng)建聊天對話框用到的GUI組件變量
private?Jframe?jframe;
private?JTextArea?jTextArea;
private?JTextField?jTextField;
private?JButton?jButton;
private?JPanel??jPanel;
//在客戶端和服務端傳輸數(shù)據(jù)要用到的變量引用,并設置getter/setter方法
private?Socket?socket;
private?DataInputStream?dis;
private?DataOutputStream?dos;
//把繪制窗體寫在構造方法里,這樣創(chuàng)建對象時候,就能直接繪制窗體
public?Client(){
ui();
send();
con();
accept();
keyEntry();
}
/**
?*?開啟一個新線程,用來一直接收客戶端輸出到socket的數(shù)據(jù)
?*/
public?void?accept(){
Thread?thread=new?Thread(new?ClientThead(this));
thread.start();
}
/**
?*?要實現(xiàn)數(shù)據(jù)傳輸,必須先連接服務端,因此寫一個連接服務端的方法con
?*/
public?void?con(){
try?{
socket=new?Socket(new?Socket().getLocalAddress()1989);
dis=new?DataInputStream(socket.getInputStream());
dos=new?DataOutputStream(socket.getOutputStream());
}?catch?(IOException?e)?{
e.printStackTrace();
}
}
/**
?*?方法ui用來繪制對話窗體
?*/
private?void?ui(){
//創(chuàng)建各種組件的對象,并賦值給類里定義的私有字段變量
jframe=new?Jframe(“客戶端對話框“);
jTextArea=new?JTextArea();
jTextField=new?JTextField();
jButton=new?JButton(“發(fā)送“);
jPanel=new?JPanel();
//所有布局組件一定要放在最前面,由外層而內(由下而上)不然效果會和預想的很不一樣!吃了很多虧的經(jīng)驗卡了很多次出來布局很怪
jframe.setLayout(new?BorderLayout(1010));
jPanel.setLayout(new?BorderLayout(1010));
//添加文本組件jTextArea,容器jPanel到jframe中同時進行布局
????????jframe.add(jTextAreaBorderLayout.CENTER);
????????jframe.add(jPanelBorderLayout.SOUTH);
????????
????????//添加文本組件jTextField,按鈕jButton到jPanel中同時進行布局
????????jPanel.add(jTextFieldBorderLayout.CENTER);
????????jPanel.add(jButtonBorderLayout.EAST);
????????
????????//設置對話窗體的整體樣式,并顯示
jframe.setSize(400400);
jframe.setLocation(600?300);
jframe.setVisible(true);
}
????
????//給發(fā)送按鈕jButton添加事件監(jiān)聽器,為了代碼干練,清晰,自定義一個事件監(jiān)聽器類SendMessageListener實現(xiàn)ActionListener接口
????/**
?????*?給發(fā)送按鈕jButton添加事件監(jiān)聽器寫成一個send方法,讓構造器直接調用,方便創(chuàng)建對象的時候使用。
?????*?自定義一個事件監(jiān)聽器類SendMessageListener實現(xiàn)ActionListener接口
?????*?send方法用來發(fā)送聊天內容
?????*/
private?void?send(){
jButton.addActionListener(new?ClientSendMessageListener(this));
}
????/**
?????*?給輸入文字JTextfield添加回車響應事件
?????*/
private?void?keyEntry(){
jTextField.addKeyListener(new?KeyClient(this));
}
public?static?void?main(String[]?args)?{
new?Client();
}
/**
?*?@return?the?jTextArea
?*/
public?JTextArea?getjTextArea()?{
return?jTextArea;
}
/**
?*?@param?jTextArea?the?jTextArea?to?set
?*/
public?void?setjTextArea(JTextArea?jTextArea)?{
this.jTextArea?=?jTextArea;
}
/**
?*?@return?the?j
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2014-04-01?18:01??chattool\
?????文件?????????301??2014-03-28?12:34??chattool\.classpath
?????文件?????????384??2014-03-28?12:34??chattool\.project
?????目錄???????????0??2014-04-01?18:01??chattool\.settings\
?????文件?????????598??2014-03-28?12:34??chattool\.settings\org.eclipse.jdt.core.prefs
?????目錄???????????0??2014-04-01?18:01??chattool\bin\
?????目錄???????????0??2014-04-01?18:01??chattool\bin\client\
?????文件????????3853??2014-03-31?23:34??chattool\bin\client\Client.class
?????文件????????1815??2014-03-31?23:31??chattool\bin\client\ClientSendMessageListener.class
?????文件????????1286??2014-03-31?23:31??chattool\bin\client\ClientThead.class
?????文件????????1779??2014-03-31?23:31??chattool\bin\client\KeyClient.class
?????目錄???????????0??2014-04-01?18:01??chattool\bin\serve\
?????文件????????1774??2014-03-31?23:21??chattool\bin\serve\KeyServer.class
?????文件????????1792??2014-03-31?22:50??chattool\bin\serve\SendMessageListener.class
?????文件????????3884??2014-03-31?23:21??chattool\bin\serve\Server.class
?????文件????????1272??2014-03-31?22:54??chattool\bin\serve\ServerThead.class
?????目錄???????????0??2014-04-01?18:01??chattool\src\
?????目錄???????????0??2014-04-01?18:01??chattool\src\client\
?????文件????????3879??2014-03-31?23:34??chattool\src\client\Client.java
?????文件????????1538??2014-03-31?23:31??chattool\src\client\ClientSendMessageListener.java
?????文件?????????648??2014-03-31?23:31??chattool\src\client\ClientThead.java
?????文件????????1249??2014-03-31?23:31??chattool\src\client\KeyClient.java
?????目錄???????????0??2014-04-01?18:01??chattool\src\serve\
?????文件????????1246??2014-03-31?23:21??chattool\src\serve\KeyServer.java
?????文件????????2652??2014-03-31?22:50??chattool\src\serve\SendMessageListener.java
?????文件????????3898??2014-03-31?23:21??chattool\src\serve\Server.java
?????文件?????????716??2014-03-31?22:54??chattool\src\serve\ServerThead.java
?????文件?????????347??2014-04-01?17:59??使用說明.txt
評論
共有 條評論