21xrx.com
2025-03-19 13:41:39 Wednesday
文章检索 我的文章 写文章
Java多线程聊天室代码实现
2023-07-03 20:44:41 深夜i     16     0
Java 多线程 聊天室 代码实现

Java多线程聊天室是一种可以在多个客户端之间实时聊天的网络应用程序。缺少多线程的聊天室代码可能会出现阻塞现象,因为所有客户端都需要等待服务端响应。

Java多线程聊天室使用了Java的线程机制,这使得多个客户端可以同时发送和接收消息,而不会相互干扰。要实现Java多线程聊天室,需要编写客户端和服务端的代码,并且使用Socket类在TCP/IP协议上进行通信。

以下是一个简单的Java多线程聊天室代码实现:

服务端:

import java.net.*;
import java.io.*;
public class Server {
  private ServerSocket server;
  private Socket socket;
  private PrintWriter out;
  private BufferedReader in;
  public void start(int port) {
    try {
      server = new ServerSocket(port);
      System.out.println("Server started.");
      socket = server.accept();
      System.out.println("Client connected.");
      out = new PrintWriter(socket.getOutputStream(), true);
      in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
      String clientInput;
      while ((clientInput = in.readLine()) != null) {
        System.out.println("Client: " + clientInput);
        out.println(clientInput);
      }
    } catch (IOException e) {
      System.out.println(e.getMessage());
    } finally {
      try {
        socket.close();
        in.close();
        out.close();
      } catch (IOException e) {
        System.out.println(e.getMessage());
      }
    }
  }
  public static void main(String[] args) {
    Server server = new Server();
    server.start(8080);
  }
}

客户端:

import java.net.*;
import java.io.*;
public class Client {
  private Socket socket;
  private PrintWriter out;
  private BufferedReader in;
  private BufferedReader stdIn;
  public void start(String ip, int port) {
    try {
      socket = new Socket(ip, port);
      System.out.println("Connected to server.");
      out = new PrintWriter(socket.getOutputStream(), true);
      in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
      stdIn = new BufferedReader(new InputStreamReader(System.in));
      String userInput;
      while ((userInput = stdIn.readLine()) != null) {
        out.println(userInput);
        System.out.println("Server: " + in.readLine());
      }
    } catch (UnknownHostException e) {
      System.out.println(e.getMessage());
    } catch (IOException e) {
      System.out.println(e.getMessage());
    } finally {
      try {
        socket.close();
        in.close();
        out.close();
        stdIn.close();
      } catch (IOException e) {
        System.out.println(e.getMessage());
      }
    }
  }
  public static void main(String[] args) {
    Client client = new Client();
    client.start("localhost", 8080);
  }
}

上述代码实现了一个简单的Java多线程聊天室,可以通过运行服务端和客户端代码进行测试。当客户端输入消息时,服务端将把消息发送回客户端,从而实现简单的聊天。

需要注意的是,在实际应用中需要对代码进行加强,为客户端和服务端提供更多功能,例如消息分组、登录认证等。但以上代码实现了Java多线程聊天室的基本功能,可以为进一步开发提供参考。

  
  

评论区