@论程序猿的自我修养----千年老妖
简易聊天java程序-无数据库有界面
聊天界面解析—
一.多人聊天室&&私聊聊天室简易效果运行图示:
(1)多人聊天室注册界面
(2)客户上线互动聊天,进去聊天室之后可以判断选择你是要私聊某个人还是说要发给每个人。
使用规则:如果要私发给某一个人就正常发送完内容后+(-用户名)即可。就可以将消息发送给你要私聊的人。
如果要将此消息发送给所有人即不用添加用户名即可,正常发送。
(3).服务器显示登录信息和下线信息
这里注意,我是在自己的本机进行试验的,所以IP地址都是本机地址
如图所示,要剔除520客户,即直接在服务器端输入即可,则其他用户就会收到该用户已被剔除的信息。
(4)如图所示为多人聊天界面截图
这里注意,用户的上线人数有服务器端控制
总结思路:
A.在之前多人聊天的基础上,服务器端首先进行一个判断,是要私聊还是多人聊。
B.判断私聊还是多人聊得依据是用户名,通过用户名匹配或者ip匹配来判断对方是否存在,如果匹配成功,说明该用户在线,即可给他私发信息,若不存在该用户,即此消息发送不成功。
C.确定如果要多人聊天,即不用匹配用户名,直接在聊天框中输入内容即可。
D.同理,用户上线下线,其他用户都知道,和发信息其他用户可以收到是同理。
代码实现
代码完善,需要注意的是,此程序是在eclipse中开发的,里面的一些jar包可能已下架,需要搜索下载该资源。
此图为该程序结构和所需jar包
- server类
- 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 clientList = new ArrayList();
// 在线用户名列表
ArrayList usernamelist = new ArrayList();
// 创建一个信息显示框
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
-