溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java Socket套接字如何實現數據傳輸

發布時間:2025-05-27 06:00:49 來源:億速云 閱讀:113 作者:小樊 欄目:編程語言

在Java中,使用Socket套接字進行數據傳輸主要涉及到兩個類:java.net.Socket(用于客戶端)和java.net.ServerSocket(用于服務器端)。以下是使用這兩個類實現數據傳輸的基本步驟:

服務器端

  1. 創建ServerSocket對象

    ServerSocket serverSocket = new ServerSocket(port);
    

    其中port是服務器監聽的端口號。

  2. 接受客戶端連接

    Socket clientSocket = serverSocket.accept();
    

    這行代碼會阻塞,直到有客戶端連接到服務器。

  3. 獲取輸入輸出流

    InputStream input = clientSocket.getInputStream();
    OutputStream output = clientSocket.getOutputStream();
    
  4. 讀取和寫入數據

    // 讀取客戶端發送的數據
    BufferedReader reader = new BufferedReader(new InputStreamReader(input));
    String receivedData = reader.readLine();
    
    // 向客戶端發送數據
    PrintWriter writer = new PrintWriter(output, true);
    writer.println("Hello, Client!");
    
  5. 關閉資源

    reader.close();
    writer.close();
    clientSocket.close();
    serverSocket.close();
    

客戶端

  1. 創建Socket對象

    Socket socket = new Socket(serverAddress, port);
    

    其中serverAddress是服務器的IP地址或主機名,port是服務器監聽的端口號。

  2. 獲取輸入輸出流

    InputStream input = socket.getInputStream();
    OutputStream output = socket.getOutputStream();
    
  3. 讀取和寫入數據

    // 向服務器發送數據
    PrintWriter writer = new PrintWriter(output, true);
    writer.println("Hello, Server!");
    
    // 讀取服務器發送的數據
    BufferedReader reader = new BufferedReader(new InputStreamReader(input));
    String receivedData = reader.readLine();
    System.out.println(receivedData);
    
  4. 關閉資源

    reader.close();
    writer.close();
    socket.close();
    

示例代碼

服務器端代碼

import java.io.*;
import java.net.*;

public class Server {
    public static void main(String[] args) {
        int port = 12345;
        try (ServerSocket serverSocket = new ServerSocket(port)) {
            System.out.println("Server is listening on port " + port);

            while (true) {
                try (Socket clientSocket = serverSocket.accept()) {
                    System.out.println("New client connected");

                    InputStream input = clientSocket.getInputStream();
                    BufferedReader reader = new BufferedReader(new InputStreamReader(input));

                    OutputStream output = clientSocket.getOutputStream();
                    PrintWriter writer = new PrintWriter(output, true);

                    String receivedData = reader.readLine();
                    System.out.println("Received from client: " + receivedData);

                    writer.println("Hello, Client!");
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

客戶端代碼

import java.io.*;
import java.net.*;

public class Client {
    public static void main(String[] args) {
        String serverAddress = "localhost";
        int port = 12345;

        try (Socket socket = new Socket(serverAddress, port)) {
            OutputStream output = socket.getOutputStream();
            PrintWriter writer = new PrintWriter(output, true);

            writer.println("Hello, Server!");

            InputStream input = socket.getInputStream();
            BufferedReader reader = new BufferedReader(new InputStreamReader(input));

            String receivedData = reader.readLine();
            System.out.println("Received from server: " + receivedData);
        } catch (UnknownHostException e) {
            System.err.println("Don't know about host " + serverAddress);
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

通過上述步驟和示例代碼,你可以在Java中使用Socket套接字實現基本的數據傳輸。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女