Java多客户端通信服务端代码详解

2025-01-01 23:22:42   小编

Java多客户端通信服务端代码详解

在Java网络编程中,实现多客户端与服务端的通信是一项常见且重要的任务。本文将详细解析Java多客户端通信服务端的代码实现。

创建服务端的基本步骤包括:创建ServerSocket对象,指定监听的端口号;通过accept()方法监听客户端的连接请求;创建线程来处理每个客户端的通信。

以下是一个简单的服务端代码示例:

import java.io.IOException;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

public class MultiClientServer {
    public static void main(String[] args) {
        try {
            ServerSocket serverSocket = new ServerSocket(8888);
            System.out.println("服务器已启动,等待客户端连接...");

            while (true) {
                Socket clientSocket = serverSocket.accept();
                System.out.println("客户端已连接:" + clientSocket.getInetAddress());

                // 创建新线程处理客户端请求
                new ClientHandler(clientSocket).start();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    static class ClientHandler extends Thread {
        private Socket clientSocket;

        public ClientHandler(Socket clientSocket) {
            this.clientSocket = clientSocket;
        }

        @Override
        public void run() {
            try {
                Scanner scanner = new Scanner(clientSocket.getInputStream());
                PrintWriter printWriter = new PrintWriter(clientSocket.getOutputStream(), true);

                String message = scanner.nextLine();
                System.out.println("收到客户端消息:" + message);
                printWriter.println("服务端已收到消息:" + message);

                scanner.close();
                printWriter.close();
                clientSocket.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

在上述代码中,ServerSocket监听端口8888,当有客户端连接时,通过accept()方法获取客户端的Socket对象。然后创建ClientHandler线程来处理与该客户端的通信。

ClientHandler线程中,通过Scanner读取客户端发送的消息,再通过PrintWriter向客户端发送响应消息。

通过这种方式,服务端可以同时处理多个客户端的连接和通信请求,实现多客户端通信的功能。掌握这些代码逻辑和实现细节,对于理解Java网络编程的多客户端通信机制具有重要意义。

TAGS: Java 代码详解 服务端代码 多客户端通信

欢迎使用万千站长工具!

Welcome to www.zzTool.com