在Java中,建立Socket連接主要包括兩個步驟:服務器端創建ServerSocket對象并監聽指定端口,客戶端創建Socket對象并連接到服務器的IP地址和端口。以下是一個簡單的示例:
服務器端代碼:
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); // 創建ServerSocket對象
System.out.println("服務器已啟動,正在監聽端口:" + port);
Socket socket = serverSocket.accept(); // 等待客戶端連接
System.out.println("客戶端已連接:" + socket.getInetAddress());
InputStream inputStream = socket.getInputStream(); // 獲取客戶端發送的數據流
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String message;
while ((message = bufferedReader.readLine()) != null) {
System.out.println("收到客戶端消息:" + message);
}
socket.close(); // 關閉Socket連接
serverSocket.close(); // 關閉ServerSocket對象
}
}
客戶端代碼:
import java.io.*;
import java.net.*;
public class Client {
public static void main(String[] args) throws IOException {
String serverAddress = "localhost"; // 服務器IP地址
int port = 12345; // 服務器監聽的端口號
Socket socket = new Socket(serverAddress, port); // 創建Socket對象并連接到服務器
System.out.println("已連接到服務器:" + serverAddress + ":" + port);
OutputStream outputStream = socket.getOutputStream(); // 獲取服務器發送的數據流
PrintWriter printWriter = new PrintWriter(outputStream, true);
String message = "你好,服務器!";
printWriter.println(message); // 向服務器發送消息
System.out.println("已發送消息:" + message);
socket.close(); // 關閉Socket連接
}
}
在這個示例中,服務器端創建了一個ServerSocket對象并監聽12345端口。當客戶端連接到服務器時,服務器會接收到客戶端的消息并在控制臺輸出。客戶端創建一個Socket對象并連接到服務器的IP地址和端口,然后向服務器發送一條消息。