• 大小: 661KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-26
  • 语言: Java
  • 标签: Java案例  仿QQ  Java仿QQ  

资源简介

使用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\GroupChatframe$1.class
     文件        2679  2018-06-19 19:48  Chat\bin\com\ooyhao\ui\GroupChatframe.class
     文件        2440  2018-06-19 19:48  Chat\bin\com\ooyhao\ui\SingleChatframe.class
     目录           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个文件信息

评论

共有 条评论