本程序在程序 https://blog.youkuaiyun.com/joffy/article/details/18079331 的基础是上添加了私聊,踢出用户两个功能。
由客户端和服务器端构成程序,程序借助Json包处理数据,项目需要导入包。
程序具体流程看注释。
用户 Bean
package com.server;
import java.net.Socket;
/**
* 用户 JavaBean
*/
public class User {
private String UserName = "";
private Socket socket;
public String getUserName() {
return UserName;
}
public void setUserName(String userName) {
UserName = userName;
}
public Socket getSocket() {
return socket;
}
public void setSocket(Socket socket) {
this.socket = socket;
}
}
服务器类
package com.server;
import java.io.*;
import java.net.*;
import java.util.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import net.sf.json.JSONObject;
/**
* 服务器类,继承JFrame,实现窗口化界面
*/
public class Server extends JFrame {
// 在线用户列表
ArrayList<User> clientList = new ArrayList<User>();
// 在线用户名列表
ArrayList<String> usernamelist = new ArrayList<String>();
// 创建一个信息显示框
private JTextArea jta = new JTextArea();
// 用于要踢除用户名的输入框
private JTextField jtf=new JTextField();
// 踢除用户名
private String usernameOut=null;
// 声明一个用户对象,该类里面有两个变量 socket,username;
private User user = null;
// 声明一个输出流
DataOutputStream output = null;
// 声明一个输入流
DataInputStream input = null;
public static void main(String[] args) {
new Server();
}
/**
* 服务器构造方法, 绘画图形界面 , 监听socket连接
*/
public Server() {
// 设置信息显示框版面
setLayout(new BorderLayout());
add(new JScrollPane(jta), BorderLayout.CENTER);
jta.setEditable(false);
jta.setFont(new Font("", 0, 18));
//设置要踢除用户的输入框
jtf.setFont(new Font("", 0, 18));
final JPanel p = new JPanel();
p.setLayout(new BorderLayout());
JLabel jLabel = new JLabel("输入要踢除用户的名称,按回车发送");
jLabel.setFont(new Font("", 0, 20));
p.add(jLabel, BorderLayout.WEST);
p.add(jtf, BorderLayout.CENTER);
jtf.setHorizontalAlignment(JTextField.LEFT);
add(p, BorderLayout.SOUTH);
jtf.addActionListener(new ButtonListener());
setTitle("服务器 ");
setSize(800, 400);
setLocation(100, 500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true); //
try {
// 创建一个服务器socket,绑定端口8000
ServerSocket serverSocket = new ServerSocket(8080);
// 打印启动时间
jta.append("服务器启动时间 " + new Date() + "\n\n");
// 无限循环监听是否有新的客户端连接
while (true) {
// 监听一个新的连接
Socket socket = serverSocket.accept();
if (socket != null) {
// 获取上线用户的信息
input = new DataInputStream(socket.getInputStream());
String json = input.readUTF();
JSONObject data = JSONObject.fromObject(json.toString());
jta.append("用

这个TCP聊天程序在原有的基础上增加了私聊和踢出用户的功能。程序由客户端和服务器端组成,使用JSON进行数据处理,并依赖特定的包。用户操作包括群聊、私聊以及管理在线用户,详细流程可在注释中查看。
最低0.47元/天 解锁文章
904

被折叠的 条评论
为什么被折叠?



