题目:使用java建立客户端、服务端,模拟一次发送消息,接收消息。
服务端:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) {
int port = 12345;
try (ServerSocket serverSocket = new ServerSocket(port)) {
System.out.println("Server started, waiting for client...");
// 等待客户端连接
Socket clientSocket = serverSocket.accept();
System.out.println("Client connected: " + clientSocket.getInetAddress());
// 获取输入流和输出流
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
// 接收客户端消息
String message = in.readLine();
System.out.println("Received message from client: " + message);
// 发送回复消息给客户端
String replyMessage = "Hello, client!";
out.println(replyMessage);
System.out.println("Sent reply message to client: " + replyMessage);
// 关闭连接
clientSocket.close();
System.out.println("Client disconnected.");
} catch (IOException e) {
e.printStackTrace();
}
}
}
客户端:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
public class Client {
public static void main(String[] args) {
String serverAddress = "localhost";
int serverPort = 12345;
try (Socket socket = new Socket(serverAddress, serverPort)) {
System.out.println("Connected to server: " + socket.getInetAddress());
// 获取输入流和输出流
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
// 发送消息给服务端
String message = "Hello, server!";
out.println(message);
System.out.println("Sent message to server: " + message);
// 接收服务端回复消息
String replyMessage = in.readLine();
System.out.println("Received reply message from server: " + replyMessage);
// 关闭连接
socket.close();
System.out.println("Disconnected from server.");
} catch (IOException e) {
e.printStackTrace();
}
}
}