import java.io.*;
import java.net.*;
public class TCPCommunication {
public static void main(String[] args) {
// 创建服务器端的ServerSocket对象
ServerSocket serverSocket = null;
// 创建客户端的Socket对象
Socket clientSocket = null;
// 创建输出流
PrintWriter printWriter = null;
// 创建输入流
BufferedReader bufferedReader = null;
try {
// 创建服务器端的ServerSocket,并监听10000端口
serverSocket = new ServerSocket(10000);
System.out.println("服务器启动,等待客户端连接...");
// 服务器端进入阻塞状态,等待客户端连接
clientSocket = serverSocket.accept();
System.out.println("客户端连接成功!");
// 获取输出流,并构造PrintWriter对象
OutputStream outputStream = clientSocket.getOutputStream();
printWriter = new PrintWriter(outputStream, true);
// 获取输入流,并构造BufferedReader对象
InputStream inputStream = clientSocket.getInputStream();
bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
// 服务器端向客户端发送消息
printWriter.println("你好,客户端!");
// 服务器端接收客户端发送的消息
String message = bufferedReader.readLine();
System.out.println("客户端说:" + message);
} catch (IOException e) {
e.printStackTrace();
} finally {
// 关闭资源
try {
if (bufferedReader != null) {
bufferedReader.close();
}
if (printWriter != null) {
printWriter.close();
}
if (clientSocket != null) {
clientSocket.close();
}
if (serverSocket != null) {
serverSocket.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
这段代码展示了如何使用Java的ServerSocket
和Socket
类创建一个简单的TCP服务器端和客户端通信的例子。服务器端监听10000端口,并接收客户端的连接请求。服务器端向客户端发送一条消息,并接收客户端发送回来的响应。代码中包含了异常处理和资源关闭的正确做法。