• 大小: 34KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-02
  • 语言: Java
  • 标签: JAVA  QQ  chat  

资源简介

基于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

评论

共有 条评论