在Java中,使用Socket套接字進行數據傳輸主要涉及到兩個類:java.net.Socket
(用于客戶端)和java.net.ServerSocket
(用于服務器端)。以下是使用這兩個類實現數據傳輸的基本步驟:
創建ServerSocket對象:
ServerSocket serverSocket = new ServerSocket(port);
其中port
是服務器監聽的端口號。
接受客戶端連接:
Socket clientSocket = serverSocket.accept();
這行代碼會阻塞,直到有客戶端連接到服務器。
獲取輸入輸出流:
InputStream input = clientSocket.getInputStream();
OutputStream output = clientSocket.getOutputStream();
讀取和寫入數據:
// 讀取客戶端發送的數據
BufferedReader reader = new BufferedReader(new InputStreamReader(input));
String receivedData = reader.readLine();
// 向客戶端發送數據
PrintWriter writer = new PrintWriter(output, true);
writer.println("Hello, Client!");
關閉資源:
reader.close();
writer.close();
clientSocket.close();
serverSocket.close();
創建Socket對象:
Socket socket = new Socket(serverAddress, port);
其中serverAddress
是服務器的IP地址或主機名,port
是服務器監聽的端口號。
獲取輸入輸出流:
InputStream input = socket.getInputStream();
OutputStream output = socket.getOutputStream();
讀取和寫入數據:
// 向服務器發送數據
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);
關閉資源:
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套接字實現基本的數據傳輸。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。