SimpleTcpServer
package main;
import java.io.*;
import java.net.*;
public class SimpleTcpServer {
private static final int PORT = 8888;
public static void main(String[] args) {
ServerSocket serverSocket = null;
try {
serverSocket = new ServerSocket(PORT);
System.out.println("TCP服务器已启动,正在监听端口: " + PORT);
while (true) {
Socket clientSocket = serverSocket.accept();
System.out.println("新客户端连接: " +
clientSocket.getInetAddress().getHostAddress() +
":" + clientSocket.getPort());
new Thread(() -> handleClient(clientSocket)).start();
}
} catch (IOException e) {
System.err.println("服务器启动失败: " + e.getMessage());
} finally {
if (serverSocket != null) {
try {
serverSocket.close();
System.out.println("服务器已关闭");
} catch (IOException e) {
System.err.println("关闭服务器时发生错误: " + e.getMessage());
}
}
}
}
private static void handleClient(Socket clientSocket) {
try (
BufferedReader in = new BufferedReader(
new InputStreamReader(clientSocket.getInputStream()));
PrintWriter out = new PrintWriter(
new BufferedWriter(
new OutputStreamWriter(clientSocket.getOutputStream())),
true)
) {
String clientMessage;
while ((clientMessage = in.readLine()) != null) {
System.out.println("收到来自客户端的消息: " + clientMessage);
String response = "服务器已收到: " + clientMessage;
out.println(response);
System.out.println("已向客户端发送响应: " + response);
}
System.out.println("客户端已断开连接");
} catch (IOException e) {
System.err.println("与客户端通信时发生错误: " + e.getMessage());
} finally {
try {
clientSocket.close();
} catch (IOException e) {
System.err.println("关闭客户端连接时发生错误: " + e.getMessage());
}
}
}
}
TcpClient
package main;
import java.io.*;
import java.net.Socket;
public class TcpClient {
public static void main(String[] args) {
String serverIp = "127.0.0.1";
int serverPort = 8888;
String serverMessage = null;
try (
Socket socket = new Socket(serverIp, serverPort);
PrintWriter out = new PrintWriter(
new BufferedWriter(
new OutputStreamWriter(socket.getOutputStream())),
true);
BufferedReader in = new BufferedReader(
new InputStreamReader(socket.getInputStream()))
) {
System.out.println("已成功连接到TCP服务器: " + serverIp + ":" + serverPort);
String messageToSend = "Hello from TCP client!";
out.println(messageToSend);
System.out.println("已发送消息: " + messageToSend);
serverMessage = in.readLine();
if (serverMessage != null) {
System.out.println("从服务器接收的消息: " + serverMessage);
} else {
System.out.println("未收到服务器的响应");
}
} catch (IOException e) {
System.err.println("连接或通信过程中发生错误: " + e.getMessage());
e.printStackTrace();
}
}
}