用Java写一个TCP通信的
时间: 2023-12-03 08:04:28 浏览: 29
示例程序
以下是一个简单的Java TCP通信示例程序,包括服务器端和客户端:
服务器端代码:
```
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 TCPServer {
public static void main(String[] args) {
try {
// 创建ServerSocket对象,绑定端口号
ServerSocket serverSocket = new ServerSocket(8888);
System.out.println("Server started...");
while (true) {
// 监听客户端的连接请求,等待连接
Socket clientSocket = serverSocket.accept();
// 获取输入输出流
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
// 读取客户端发送的数据
String inputLine;
while ((inputLine = in.readLine()) != null) {
System.out.println("Received message from client: " + inputLine);
// 发送响应消息给客户端
out.println("Server response: " + inputLine);
if (inputLine.equals("bye")) {
break;
}
}
// 关闭连接
in.close();
out.close();
clientSocket.close();
}
} 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 TCPClient {
public static void main(String[] args) {
try {
// 创建Socket对象,指定服务器地址和端口号
Socket socket = new Socket("localhost", 8888);
// 获取输入输出流
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
// 向服务器发送数据
out.println("Hello server!");
// 读取服务器响应消息
String response;
while ((response = in.readLine()) != null) {
System.out.println("Received message from server: " + response);
}
// 关闭连接
in.close();
out.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
运行服务器端程序后,再运行客户端程序,客户端会向服务器发送一条消息,服务器将会回复一条响应消息,并打印出来。如果客户端发送了"bye"消息,服务器将会关闭连接。