91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

java socket如何實現多線程通信

小樊
129
2024-06-27 18:15:28
欄目: 編程語言

在Java中,可以通過多線程來實現Socket通信。下面是一個簡單的示例代碼,演示了如何使用多線程實現Socket通信:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class MultiThreadedServer {

    public static void main(String[] args) {
        ServerSocket serverSocket = null;
        try {
            serverSocket = new ServerSocket(12345);
            System.out.println("Server started. Listening for connections on port 12345...");

            while (true) {
                Socket clientSocket = serverSocket.accept();
                System.out.println("Connection received from " + clientSocket.getInetAddress().getHostAddress());

                ClientHandler clientHandler = new ClientHandler(clientSocket);
                Thread clientThread = new Thread(clientHandler);
                clientThread.start();
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (serverSocket != null) {
                try {
                    serverSocket.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    static class ClientHandler implements Runnable {
        private Socket clientSocket;

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

        @Override
        public void run() {
            try (
                    BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
                    PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
            ) {
                String inputLine;
                while ((inputLine = in.readLine()) != null) {
                    System.out.println("Received from client: " + inputLine);
                    out.println("Server received: " + inputLine);
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

在這個示例中,ServerSocket在端口12345上監聽客戶端連接。一旦有連接建立,就會創建一個新的ClientHandler線程來處理該連接。ClientHandler類實現了Runnable接口,用于處理客戶端的輸入和輸出。

在ClientHandler線程中,我們創建了一個BufferedReader來讀取客戶端發送的消息,并通過PrintWriter來向客戶端發送消息。循環讀取客戶端發送的消息,直到客戶端關閉連接。

這樣,通過多線程的方式,我們可以實現Socket通信,并同時處理多個客戶端的連接。

0
黑龙江省| 彝良县| 富宁县| 墨玉县| 同心县| 长丰县| 静安区| 文成县| 浮山县| 西贡区| 马山县| 集贤县| 莎车县| 长寿区| 介休市| 齐河县| 玉树县| 东山县| 聂荣县| 兰西县| 凤凰县| 瓮安县| 喀喇| 南开区| 新乡市| 普格县| 伊宁县| 神池县| 四子王旗| 宿迁市| 抚远县| 广德县| 翁牛特旗| 五台县| 甘南县| 海兴县| 澳门| 南川市| 广东省| 漳州市| 临潭县|