資源簡介
使用Java 多線程,IO流,網絡編程,GUI,集合等知識實現一個Java JDK版仿QQ聊天室,實現了單獨聊天和群聊。

代碼片段和文件信息
package?com.ooyhao.client;
import?java.awt.List;
import?java.awt.TextField;
import?java.io.BufferedReader;
import?java.io.BufferedWriter;
import?java.io.IOException;
import?java.io.InputStream;
import?java.io.InputStreamReader;
import?java.io.OutputStreamWriter;
import?java.net.InetAddress;
import?java.net.Socket;
import?java.text.SimpleDateFormat;
import?java.util.Date;
import?java.util.HashSet;
import?java.util.Set;
import?javax.swing.JOptionPane;
import?com.google.gson.Gson;
import?com.ooyhao.pojo.DataPackage;
import?com.ooyhao.ui.GroupChatframe;
//客戶端
public?class?Client?{
public?static?void?main(String[]?args)?throws?Exception?{
GroupChatframe?frame?=?new?GroupChatframe(“username“);
Socket?socket?=?null;
//動態獲取本機ip地址
InetAddress?ia?=?InetAddress.getLocalHost();
//當服務器未啟動時,彈出提示框。
try?{
socket?=?new?Socket(ia.getHostAddress()?8888);
}catch?(Exception?e)?{
JOptionPane.showMessageDialog(frame?“服務器未啟動“);
System.exit(0);
}
//彈出輸入框,要求用戶輸入用戶名
frame.settitle(socket.getInetAddress().getHostAddress());
while(true)?{
String?inputContent?=?null;
inputContent?=?JOptionPane.showInputDialog(
frame
“輸入你的名字(“
+?“不允許不輸入或只輸入空格):““服務器ip:“+“192.168.91.1“
JOptionPane.QUESTION_MESSAGE
);
System.out.println(“輸入的內容:?“?+?inputContent);
if(inputContent?==?null?||?““.equals(inputContent)?||?““.equals(inputContent.trim())?)?{
System.exit(0);
}else?{
//發送一條狀態信息為1的信息,用戶告知服務器,此客戶端上線。
TextField?field?=?frame.getTextField();
List?list?=?frame.getList();
frame.settitle(inputContent);
String?message?=?field.getText();
DataPackage?dataPackage?=?new?DataPackage();
//要發送給誰
Set?dest?=?new?HashSet();
String[]?strs?=?list.getItems();
for(String?s?:?strs)?{
dest.add(s);
}
String?sender?=?frame.gettitle();
Integer?state?=?1;
dataPackage.setDest(dest);
dataPackage.setMessage(message);
dataPackage.setSender(sender);
dataPackage.setState(state);
try?{
//?通過socket獲取發送數據的輸出流并將其包裝成一個緩沖字符流
BufferedWriter?writer?=?new?BufferedWriter(new?OutputStreamWriter(socket.getOutputStream()));
Gson?gson?=?new?Gson();
writer.write(gson.toJson(dataPackage));
writer.newLine();
writer.flush();
}?catch?(IOException?e1)?{
e1.printStackTrace();
}
InputStream?in?=?socket.getInputStream();
BufferedReader?reader?=?new?BufferedReader(new?InputStreamReader(in));
String?line?=?null;
line?=?reader.readLine();
Gson?gson?=?new?Gson();
DataPackage?data?=?gson.fromJson(line?DataPackage.class);
if(data.getState()?==?0)?{
JOptionPane.showMessageDialog(frame?“用戶名存在“);
}else?{
SimpleDateFormat?sdf?=?new?SimpleDateFormat(“hh:mm:ss“);
String?time?=?sdf.format(new?Date());
frame.getTextArea().append(data.getSender()+
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-06-18?23:22??Chat\
?????文件?????????362??2018-04-23?23:05??Chat\.classpath
?????文件?????????380??2018-04-23?23:04??Chat\.project
?????目錄???????????0??2018-06-18?23:22??Chat\.settings\
?????文件?????????598??2018-04-23?23:04??Chat\.settings\org.eclipse.jdt.core.prefs
?????目錄???????????0??2018-06-19?19:48??Chat\bin\
?????目錄???????????0??2018-06-19?19:48??Chat\bin\com\
?????目錄???????????0??2018-06-19?19:48??Chat\bin\com\ooyhao\
?????目錄???????????0??2018-06-19?19:48??Chat\bin\com\ooyhao\client\
?????文件????????5448??2018-06-19?19:48??Chat\bin\com\ooyhao\client\Client.class
?????文件????????4444??2018-06-19?19:48??Chat\bin\com\ooyhao\client\ClientReceiveThread.class
?????文件????????3156??2018-06-19?19:48??Chat\bin\com\ooyhao\client\ClientSendThread$1.class
?????文件????????2588??2018-06-19?19:48??Chat\bin\com\ooyhao\client\ClientSendThread$2.class
?????文件????????1832??2018-06-19?19:48??Chat\bin\com\ooyhao\client\ClientSendThread.class
?????文件????????3787??2018-06-19?19:48??Chat\bin\com\ooyhao\client\ClientSingleChatThread$1.class
?????文件????????1072??2018-06-19?19:48??Chat\bin\com\ooyhao\client\ClientSingleChatThread$2.class
?????文件????????1336??2018-06-19?19:48??Chat\bin\com\ooyhao\client\ClientSingleChatThread.class
?????目錄???????????0??2018-06-19?19:48??Chat\bin\com\ooyhao\pojo\
?????文件????????1810??2018-06-19?19:48??Chat\bin\com\ooyhao\pojo\DataPackage.class
?????目錄???????????0??2018-06-19?19:48??Chat\bin\com\ooyhao\server\
?????文件????????1445??2018-06-19?19:48??Chat\bin\com\ooyhao\server\Handler.class
?????文件????????1000??2018-06-19?19:48??Chat\bin\com\ooyhao\server\Server.class
?????文件????????3429??2018-06-19?19:48??Chat\bin\com\ooyhao\server\ServerCenterController.class
?????文件????????2627??2018-06-19?19:48??Chat\bin\com\ooyhao\server\ServerReceiveThread.class
?????目錄???????????0??2018-06-19?19:48??Chat\bin\com\ooyhao\ui\
?????文件?????????744??2018-06-19?19:48??Chat\bin\com\ooyhao\ui\GroupChatfr
?????文件????????2679??2018-06-19?19:48??Chat\bin\com\ooyhao\ui\GroupChatfr
?????文件????????2440??2018-06-19?19:48??Chat\bin\com\ooyhao\ui\SingleChatfr
?????目錄???????????0??2018-06-19?19:48??Chat\bin\images\
?????文件???????62319??2018-04-25?15:13??Chat\bin\images\QQ.png
?????文件???????64279??2018-04-25?15:16??Chat\bin\images\wechat.png
............此處省略25個文件信息
- 上一篇:javax 常用jar
- 下一篇:Android 最簡潔的txt文本閱讀器
評論
共有 條評論