使用Java Socket進行數據傳輸主要包括兩個步驟:創建Socket對象和進行數據讀寫。以下是一個簡單的示例,演示了如何使用Java Socket在客戶端和服務器之間發送和接收字符串數據。
服務器端代碼:
import java.io.*;
import java.net.*;
public class Server {
public static void main(String[] args) throws IOException {
// 創建一個Socket對象,監聽指定端口
ServerSocket serverSocket = new ServerSocket(8888);
System.out.println("Server is listening on port 8888...");
// 等待客戶端連接
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!");
// 關閉資源
reader.close();
writer.close();
socket.close();
serverSocket.close();
}
}
客戶端代碼:
import java.io.*;
import java.net.*;
public class Client {
public static void main(String[] args) throws IOException {
// 創建一個Socket對象,連接到指定服務器和端口
Socket socket = new Socket("localhost", 8888);
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);
// 關閉資源
reader.close();
writer.close();
socket.close();
}
}
在這個示例中,服務器監聽端口8888,并在接收到客戶端連接后,讀取客戶端發送的數據并打印出來。然后,服務器向客戶端發送一條響應消息。客戶端連接到服務器后,發送一條消息給服務器,并打印出從服務器接收到的響應消息。
請注意,這個示例僅用于演示基本的Socket數據傳輸功能。在實際應用中,你可能需要處理更多的細節,例如異常處理、多線程通信、數據編碼和解碼等。此外,為了確保代碼的健壯性,你可能還需要添加適當的日志記錄和錯誤處理機制。