资源简介
基于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源码,servlet+jsp),适
- java串口通信全套完整代码-导入eclip
- jsonarray所必需的6个jar包.rar
- 三角网构TIN生成算法,Java语言实现
- java代码编写将excel数据导入到mysql数据
- Java写的cmm词法分析器源代码及javacc学
- JAVA JSP公司财务管理系统 源代码 论文
- JSP+MYSQL旅行社管理信息系统
- 推荐算法的JAVA实现
- 基于Java的酒店管理系统源码(毕业设
- java-图片识别 图片比较
- android毕业设计
- java23种设计模式+23个实例demo
- java Socket发送/接受报文
- JAVA828436
- java界面美化 提供多套皮肤直接使用
- 在线聊天系统(java代码)
- 基于Java的图书管理系统807185
- java中实现将页面数据导入Excel中
- java 企业销售管理系统
- java做的聊天系统(包括正规课程设计
- Java编写的qq聊天室
- 商店商品管理系统 JAVA写的 有界面
- JAVA开发聊天室程序
- 在linux系统下用java执行系统命令实例
- java期末考试试题两套(答案) 选择(
- JAVA3D编程示例(建模、交互)
- Java 文件加密传输
- java做的房产管理系统
- 基于jsp的bbs论坛 非常详细
评论
共有 条评论