在Java中使用Socket進行網絡通信可以分為服務端和客戶端兩部分。
服務端:
創建ServerSocket對象,并指定端口號。
調用ServerSocket的accept()方法接收客戶端連接請求,返回一個Socket對象。
使用Socket對象的輸入流和輸出流進行數據的讀取和寫入。
通信完成后,關閉Socket對象和ServerSocket對象。
示例代碼:
import java.io.*;
import java.net.*;
public class Server {
public static void main(String[] args) {
try {
// 創建ServerSocket對象,并指定端口號
ServerSocket serverSocket = new ServerSocket(8888);
// 接收客戶端連接請求,返回一個Socket對象
Socket socket = serverSocket.accept();
// 獲取輸入流和輸出流
InputStream is = socket.getInputStream();
OutputStream os = socket.getOutputStream();
// 讀取客戶端發送的數據
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
String data = reader.readLine();
System.out.println("Client: " + data);
// 向客戶端發送數據
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os));
writer.write("Hello, client!\n");
writer.flush();
// 關閉流和Socket對象
reader.close();
writer.close();
is.close();
os.close();
socket.close();
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
客戶端:
創建Socket對象,指定服務端的IP地址和端口號。
使用Socket對象的輸入流和輸出流進行數據的讀取和寫入。
通信完成后,關閉Socket對象。
示例代碼:
import java.io.*;
import java.net.*;
public class Client {
public static void main(String[] args) {
try {
// 創建Socket對象,指定服務端的IP地址和端口號
Socket socket = new Socket("127.0.0.1", 8888);
// 獲取輸入流和輸出流
InputStream is = socket.getInputStream();
OutputStream os = socket.getOutputStream();
// 向服務端發送數據
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os));
writer.write("Hello, server!\n");
writer.flush();
// 讀取服務端發送的數據
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
String data = reader.readLine();
System.out.println("Server: " + data);
// 關閉流和Socket對象
writer.close();
reader.close();
is.close();
os.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
以上代碼演示了一個簡單的Socket通信過程,在實際應用中可能需要進行異常處理、循環讀取數據等操作。