如何在Java中实现TCP socket通信?
发布时间:2023-07-02 04:25:09
在Java中实现TCP socket通信需要使用Java的Socket和ServerSocket类。Socket类代表客户端的套接字,ServerSocket类代表服务器端的套接字。
1. 服务器端实现TCP socket通信:
1. 创建一个ServerSocket实例,并指定服务器端口号。
2. 调用ServerSocket的accept()方法,等待客户端连接。
3. 一旦有客户端连接,accept()方法将返回一个Socket对象,用于与客户端进行通信。
4. 使用Socket的InputStream和OutputStream来进行读写操作。
5. 关闭连接,释放资源。
示例代码如下:
import java.io.*;
import java.net.*;
public class TCPServer {
public static void main(String[] args) {
try {
// 创建服务器端套接字
ServerSocket serverSocket = new ServerSocket(9999);
// 等待客户端连接
Socket socket = serverSocket.accept();
// 获取输入流和输出流
InputStream inputStream = socket.getInputStream();
OutputStream outputStream = socket.getOutputStream();
// 读取客户端发送的数据
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
String message = reader.readLine();
System.out.println("收到客户端的消息:" + message);
// 向客户端发送数据
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(outputStream));
writer.write("Hello from server");
writer.newLine();
writer.flush();
// 关闭连接
reader.close();
writer.close();
socket.close();
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
2. 客户端实现TCP socket通信:
1. 创建一个Socket实例,并指定服务器的IP地址和端口号。
2. 使用Socket的InputStream和OutputStream来进行读写操作。
3. 关闭连接,释放资源。
示例代码如下:
import java.io.*;
import java.net.*;
public class TCPClient {
public static void main(String[] args) {
try {
// 创建客户端套接字
Socket socket = new Socket("localhost", 9999);
// 获取输入流和输出流
InputStream inputStream = socket.getInputStream();
OutputStream outputStream = socket.getOutputStream();
// 向服务器发送数据
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(outputStream));
writer.write("Hello from client");
writer.newLine();
writer.flush();
// 读取服务器发送的数据
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
String message = reader.readLine();
System.out.println("收到服务器的消息:" + message);
// 关闭连接
reader.close();
writer.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
以上就是在Java中实现TCP socket通信的基本步骤,通过Socket和ServerSocket类可以实现服务器和客户端之间的双向通信。在实际应用中,可以根据具体需求进行扩展和优化。
