java socket编程如何处理并发连接

avatar
作者
猴君
阅读量:0

在Java中,处理Socket编程的并发连接主要依赖于多线程。每当客户端与服务器建立一个新的连接时,服务器可以为每个连接创建一个新的线程来处理客户端的请求。这样,服务器就可以同时处理多个客户端的并发连接。

以下是一个简单的Java Socket服务器示例,演示如何处理并发连接:

import java.io.*; import java.net.*;  public class ConcurrentServer {     public static void main(String[] args) throws IOException {         int port = 12345;         ServerSocket serverSocket = new ServerSocket(port);         System.out.println("Server started on port " + port);          while (true) {             // 接受客户端连接             Socket clientSocket = serverSocket.accept();             System.out.println("New client connected");              // 为每个客户端连接创建一个新线程             Thread clientThread = new Thread(new ClientHandler(clientSocket));             clientThread.start();         }     } }  class ClientHandler implements Runnable {     private Socket clientSocket;      public ClientHandler(Socket socket) {         this.clientSocket = socket;     }      @Override     public void run() {         try {             // 读取客户端发送的数据             BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));             String inputLine;              while ((inputLine = in.readLine()) != null) {                 System.out.println("Received from client: " + inputLine);                  // 向客户端发送响应                 PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);                 out.println("Server response: " + inputLine);             }              // 关闭资源             in.close();             out.close();             clientSocket.close();         } catch (IOException e) {             System.out.println("Error handling client connection: " + e.getMessage());         }     } } 

在这个示例中,服务器监听12345端口上的客户端连接。当客户端连接到服务器时,服务器会为每个连接创建一个新的ClientHandler线程来处理客户端的请求。ClientHandler线程负责读取客户端发送的数据,并向客户端发送响应。这样,服务器就可以同时处理多个客户端的并发连接。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!