资源简介
使用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文本阅读器
相关资源
- 仿QQ登陆界面java程序设计
- Android仿qq消息列表
- android仿QQ锁屏源码
- 仿QQ聊天系统JAVA+MYSQL
- Android基于Socket聊天最终版
- Java版仿QQ聊天程序源码
- android studio 仿QQ变音Demo Fmod
- Java 仿QQ隐藏窗体
- android 仿QQ的头像选择弹出的对话框
- Android应用源码之仿QQ的头像选择弹出
- BezierView(实现仿QQ未读消息效果).
- 仿QQ侧滑
- Android 仿QQ侧滑菜单(菜单与对话框
- JAVA案例开发集锦.pdf
- Android高仿QQ通讯录最终版
- 仿QQ聊天系统源码.rar
- android仿QQ的侧滑菜单功能完整版
- 仿QQ聊天工具 Java代码
- java模仿QQ通信实现RSA加密解密
- Java课程设计微仿QQ即时聊天系统
- 仿QQ火拼俄罗斯Java版
- SSH 整合 仿QQ空间
- android仿QQ登陆功能实现记住密码等
- java仿qq源码(含服务器端以及客户端
- 圆角矩形UI、带表情的输入、PopUpWin
- android 仿QQ菜单设计
- 仿qq聊天软件,xmpp实现,很精彩的
- android 高仿qq完整(含服务器端源码)
- android 仿qq侧滑菜单
- android仿qq空间发布(从相册选照片)
评论
共有 条评论