Java里socket數(shù)據(jù)如何傳輸

小樊
81
2024-09-30 01:15:20

在Java中,Socket數(shù)據(jù)傳輸主要涉及到兩個(gè)類:java.net.Socket(用于客戶端)和java.net.ServerSocket(用于服務(wù)器端)。以下是一個(gè)簡(jiǎn)單的示例,展示了如何使用這兩個(gè)類進(jìn)行數(shù)據(jù)傳輸。

服務(wù)器端

  1. 創(chuàng)建一個(gè)ServerSocket對(duì)象,指定要監(jiān)聽(tīng)的端口號(hào)。
  2. 調(diào)用ServerSocket對(duì)象的accept()方法,等待客戶端連接。
  3. 當(dāng)客戶端連接時(shí),accept()方法返回一個(gè)新的Socket對(duì)象,用于與客戶端進(jìn)行通信。
  4. 使用Socket對(duì)象的輸入流(getInputStream())和輸出流(getOutputStream())進(jìn)行數(shù)據(jù)讀寫。
  5. 關(guān)閉Socket對(duì)象。

客戶端

  1. 創(chuàng)建一個(gè)Socket對(duì)象,指定服務(wù)器的IP地址和端口號(hào)。
  2. 使用Socket對(duì)象的輸入流(getInputStream())和輸出流(getOutputStream())進(jìn)行數(shù)據(jù)讀寫。
  3. 關(guān)閉Socket對(duì)象。

以下是一個(gè)簡(jiǎn)單的Java Socket數(shù)據(jù)傳輸示例:

服務(wù)器端代碼

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

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

        Socket socket = serverSocket.accept();
        System.out.println("Client connected");

        InputStream inputStream = socket.getInputStream();
        BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
        String message = reader.readLine();
        System.out.println("Received message: " + message);

        OutputStream outputStream = socket.getOutputStream();
        PrintWriter writer = new PrintWriter(outputStream, true);
        writer.println("Hello from server");

        socket.close();
        serverSocket.close();
    }
}

客戶端代碼

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

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

        Socket socket = new Socket(serverAddress, port);
        System.out.println("Connected to server");

        OutputStream outputStream = socket.getOutputStream();
        PrintWriter writer = new PrintWriter(outputStream, true);
        writer.println("Hello from client");

        InputStream inputStream = socket.getInputStream();
        BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
        String message = reader.readLine();
        System.out.println("Received message: " + message);

        socket.close();
    }
}

在這個(gè)示例中,服務(wù)器監(jiān)聽(tīng)端口12345,并在接收到客戶端連接后,與客戶端進(jìn)行數(shù)據(jù)交換。客戶端連接到服務(wù)器并發(fā)送一條消息,然后服務(wù)器回復(fù)一條消息。最后,雙方都關(guān)閉了Socket連接。

0