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<String> dest = new HashSet<String>();
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()+
" "+time+"\r\n "+
data.getMessage()+"\r\n"+"\r\n");
//更新之前的好友列表
frame.getList().removeAll();
for(String s : data.getDest()) {
//将新的好友列表添加上去
frame.getList().add(s);
}
break;
}
}
}
//客户端注册成功之后,开启两个线程,进行数据的发送和接收。
new ClientReceiveThread(socket,frame).start();
new ClientSendThread(socket,frame).start();
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
Chat.zip (36个子文件)
Chat
.project 380B
bin
com
ooyhao
server
Handler.class 1KB
ServerCenterController.class 3KB
Server.class 1000B
ServerReceiveThread.class 3KB
client
ClientSendThread$1.class 3KB
ClientSendThread$2.class 3KB
ClientSingleChatThread.class 1KB
Client.class 5KB
ClientReceiveThread.class 4KB
ClientSendThread.class 2KB
ClientSingleChatThread$2.class 1KB
ClientSingleChatThread$1.class 4KB
ui
GroupChatFrame$1.class 744B
SingleChatFrame.class 2KB
GroupChatFrame.class 3KB
pojo
DataPackage.class 2KB
images
QQ.png 61KB
wechat.png 63KB
lib
gson-2.8.2.jar 227KB
.settings
org.eclipse.jdt.core.prefs 598B
src
com
ooyhao
server
Server.java 669B
ServerCenterController.java 3KB
Handler.java 916B
ServerReceiveThread.java 2KB
client
ClientSendThread.java 3KB
ClientReceiveThread.java 3KB
ClientSingleChatThread.java 3KB
Client.java 4KB
ui
GroupChatFrame.java 2KB
SingleChatFrame.java 2KB
pojo
DataPackage.java 921B
images
QQ.png 61KB
wechat.png 63KB
lib
gson-2.8.2.jar 227KB
.classpath 362B
共 36 条
- 1
资源评论
ooyhao
- 粉丝: 89
- 资源: 9
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功