Login
网站首页 > 文章中心 > 其它

socket服务端连接多个客户端_socket多客户端的服务程序代码分享

作者:小编 更新时间:2023-06-20 11:22:35 浏览量:82人看过

socket服务端连接多个客户端_socket多客户端的服务程序代码分享

软件介绍:以下是一个简单的 Java Socket 服务端连接多个客户端的代码示例:import java.io.BufferedReader;import java.i...

以下是一个简单的 Java Socket 服务端连接多个客户端的代码示例:

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
public class Server {
    private static ArrayList<Socket> clients = new ArrayList<Socket>();
    public static void main(String[] args) {
        try {
            int port = 8888;
            ServerSocket serverSocket = new ServerSocket(port);
            
            System.out.println("Server started on port " + port);
            while (true) {
                // 接受客户端连接请求,创建一个 Socket 对象
                Socket clientSocket = serverSocket.accept();
                System.out.println("Client connected: " + clientSocket.getInetAddress().getHostAddress());
                // 将新客户端添加到列表中
                clients.add(clientSocket);
                // 创建输入输出流
                BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
                PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
                // 使用新的线程来处理每个客户端请求
                Thread thread = new Thread(new ClientHandler(clientSocket, in, out));
                thread.start();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public static void broadcast(String message) {
        for (Socket client : clients) {
            try {
                PrintWriter out = new PrintWriter(client.getOutputStream(), true);
                out.println(message);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}
class ClientHandler implements Runnable {
    private Socket clientSocket;
    private BufferedReader in;
    private PrintWriter out;
    public ClientHandler(Socket clientSocket, BufferedReader in, PrintWriter out) {
        this.clientSocket = clientSocket;
        this.in = in;
        this.out = out;
    }
    public void run() {
        try {
            while (true) {
                String message = in.readLine();
                if (message == null) break;
                System.out.println("Received message from client: " + message);
                // 广播消息给所有客户端
                Server.broadcast(message);
            }
            // 关闭输入输出流和套接字
            in.close();
            out.close();
            clientSocket.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

在此示例中,我们使用 ArrayList 类来存储客户端连接,并通过 broadcast() 方法将消息广播给所有客户端。然后,我们创建一个新的线程来处理每个客户端请求。

请注意,此代码仅提供了一般概述,并假定您已经熟悉 Java 和 Socket 编程。您需要进一步调整和完善代码以确保其适用于您的具体应用程序需求。


版权声明:倡导尊重与保护知识产权,本站有部分资源、图片来源于网络,如有侵权,请联系我们修改或者删除处理。
转载请说明来源于"土嘎嘎" 本文地址:http://www.tugaga.com/jishu/other/497.html
<<上一篇 2023-06-20
下一篇 >> 2023-06-20

编辑推荐

热门文章