资源简介
基于C/S端的简易聊天程序,该聊天系统,就是服务器来提供服务端连接响应,客户端主动的发起连接请求。当多个用户同时连接到服务器时,经由服务器的接收与转发便可以实现客户之间的通信。
对于整体系统的流程,也是分为两部分,即客户端的发起请求,服务器响应请求。首先是客户端设置所想要连接的服务器,然后客户端就会根据设置的服务器IP地址,向服务器发起建立连接请求。而服务器端是始终在监听网络状态的,主要检测到有一个连接请求,那么服务器就会给当前的发起端分配一个服务线程,用于处理它的各种请求。
(1)一个服务器与多个客户端,其中服务器负责消息中转。
(2)实现客户端群发消息。
(3)客户端与客户端之间私聊消
代码片段和文件信息
package chat;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.event.*;
import java.util.*;
import java.util.concurrent.*;
import java.io.*;
import java.net.*;
import java.awt.*;
import java.awt.event.*;
public class Client {
//UI
private Jframe frame;
private JPanel settingPanel messagePanel;
private JSplitPane centerSplitPanel;
private JScrollPane userPanel messageBoxPanel;
private JTextArea messageTextArea;
private JTextField nameTextField ipTextField portTextField messageTextField;
private JLabel messageToLabel;
private JButton connectButton disconnectButton sendButton;
private JList userList;
//Model
private DefaultListModel listModel;
private User me;
private ConcurrentHashMap onlineUsers = new ConcurrentHashMap();
private String sendTarget = “ALL“;
//Socket
private Socket socket;
private PrintWriter writer;
private BufferedReader reader;
//Thread
private MessageThread messageThread;
//Status
private boolean isConnected;
public Client() {
initUI();
}
private void connect() {
int port;
try {
port = Integer.parseInt(portTextField.getText().trim());
} catch(NumberFormatException e) {
showErrorMessage(“端口号必须为整数!“);
return;
}
if (port < 1024 || port > 65535) {
showErrorMessage(“端口号必须在1024~65535之间“);
return;
}
String name = nameTextField.getText().trim();
if (name == null || name.equals(““)) {
showErrorMessage(“名字不能为空!“);
return;
}
String ip = ipTextField.getText().trim();
if (ip == null || ip.equals(““)) {
showErrorMessage(“IP不能为空!“);
return;
}
try {
listModel.addElement(“所有人“);
me = new User(name ip);
socket = new Socket(ip port);
reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
writer = new PrintWriter(socket.getOutputStream());
String myIP = socket.getLocalAddress().toString().substring(1);
//System.out.println(myIP);
sendMessage(“LOGIN@“ + name + “%“ + myIP);
messageThread = new MessageThread();
messageThread.start();
isConnected = true;
} catch(Exception e) {
isConnected = false;
logMessage(“客户端连接失败“);
listModel.removeAllElements();
e.printStackTrace();
return;
}
logMessage(“客户端连接成功“);
serviceUISetting(i
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-04-11 12:19 chat-chat\
文件 301 2018-04-11 12:19 chat-chat\.classpath
文件 385 2018-04-11 12:19 chat-chat\.project
目录 0 2018-04-11 12:19 chat-chat\.settings\
文件 598 2018-04-11 12:19 chat-chat\.settings\org.eclipse.jdt.core.prefs
目录 0 2018-04-23 12:45 chat-chat\bin\
目录 0 2018-04-23 12:45 chat-chat\bin\chat\
文件 657 2018-04-23 12:45 chat-chat\bin\chat\Client$1.class
文件 657 2018-04-23 12:45 chat-chat\bin\chat\Client$2.class
文件 737 2018-04-23 12:45 chat-chat\bin\chat\Client$3.class
文件 736 2018-04-23 12:45 chat-chat\bin\chat\Client$4.class
文件 763 2018-04-23 12:45 chat-chat\bin\chat\Client$5.class
文件 1880 2018-04-23 12:45 chat-chat\bin\chat\Client$6.class
文件 4021 2018-04-23 12:45 chat-chat\bin\chat\Client$MessageThread.class
文件 9773 2018-04-23 12:45 chat-chat\bin\chat\Client.class
文件 657 2018-04-23 12:45 chat-chat\bin\chat\Server$1.class
文件 657 2018-04-23 12:45 chat-chat\bin\chat\Server$2.class
文件 736 2018-04-23 12:45 chat-chat\bin\chat\Server$3.class
文件 736 2018-04-23 12:45 chat-chat\bin\chat\Server$4.class
文件 763 2018-04-23 12:45 chat-chat\bin\chat\Server$5.class
文件 5448 2018-04-23 12:45 chat-chat\bin\chat\Server$ClientServiceThread.class
文件 2781 2018-04-23 12:45 chat-chat\bin\chat\Server$ServerThread.class
文件 8761 2018-04-23 12:45 chat-chat\bin\chat\Server.class
文件 1138 2018-04-23 12:45 chat-chat\bin\chat\User.class
目录 0 2018-04-11 12:20 chat-chat\src\
目录 0 2018-04-11 12:23 chat-chat\src\chat\
文件 14947 2018-04-11 12:30 chat-chat\src\chat\Client.java
文件 16175 2018-04-11 12:39 chat-chat\src\chat\Server.java
文件 644 2018-04-11 12:21 chat-chat\src\chat\User.java
相关资源
- 生日蛋糕订购系统java编写结合装饰者
- java大牛手把手开发SSM企业级电商项目
- Java深入微服务原理改造房产销售平台
- [java]MyBatisPlus视频教程
- Java简易学生成绩管理系统
- java实现的教学管理系统——适合jav
- JAVA与C#的区别
- words-1.0-javadoc.jar
- Java实现音乐播放器源码
- 简单的java联系人系统
- C++与java的综述与比较
- SpringBoot搭建所需的任何软件与jar包完
- 学生信息管理系统.
- java开发实现163邮件发送(支持附件
- 基于Java开发的2048游戏源码
- java mysql 开发的大学生选课教务系统,
- Java游戏2048
- 基于javaWeb在线拍卖系统
- java课程设计--图书销售管理系统
- 基于JAVA的kmeans算法
- java简单网络爬虫
- java开发三年项目经验心得
- java网络通信系统的研究与开发代码
- 北邮java作业群体对象.rar
- java作业图形化.rar
- 北邮java选修大作业 购物车
- JAVA数据加密jar包之sunjce_provider.rar
- 客户管理系统Java+数据库
- java回合制游戏
- javaMD5加密
评论
共有 条评论