中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

java socket編程如何處理并發連接

小樊
85
2024-10-12 17:39:19
欄目: 編程語言

在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線程負責讀取客戶端發送的數據,并向客戶端發送響應。這樣,服務器就可以同時處理多個客戶端的并發連接。

0
宝坻区| 拜城县| 平山县| 遵义市| 桐城市| 迁安市| 泸州市| 永修县| 大冶市| 社会| 丹阳市| 江阴市| 景宁| 三门县| 巴马| 福鼎市| 合川市| 彩票| 封开县| 绥化市| 永嘉县| 金湖县| 盐亭县| 三原县| 康定县| 汝南县| 建湖县| 本溪| 渭南市| 增城市| 龙口市| 阿克苏市| 文昌市| 镶黄旗| 柳州市| 札达县| 大田县| 民乐县| 平湖市| 治县。| 定日县|