Java Socket通信协议
概述
Socket通信是一种基于网络的进程间通信方式,它允许不同的计算机上的进程通过网络进行通信。Java提供了Socket和ServerSocket类来实现Socket通信协议。
在Socket通信中,有两种角色:客户端和服务器。客户端发起连接请求,而服务器监听并接受连接请求。一旦建立连接,双方可以通过输入流和输出流进行数据的传输。
Socket类
在Java中,Socket类用于创建一个客户端Socket。通过指定目标服务器的IP地址和端口号,可以建立与服务器的连接。
下面是一个简单的Socket客户端代码示例:
import java.io.*;
import java.net.*;
public class Client {
public static void main(String[] args) {
try {
// 创建Socket对象,指定服务器IP地址和端口号
Socket socket = new Socket("127.0.0.1", 8888);
// 获取输出流,用于向服务器发送数据
OutputStream outputStream = socket.getOutputStream();
PrintWriter printWriter = new PrintWriter(outputStream);
printWriter.println("Hello, Server!");
printWriter.flush();
// 获取输入流,用于接收服务器返回的数据
InputStream inputStream = socket.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String response = bufferedReader.readLine();
System.out.println("服务器返回的数据:" + response);
// 关闭资源
bufferedReader.close();
inputStream.close();
printWriter.close();
outputStream.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
ServerSocket类
ServerSocket类用于创建一个服务器端Socket。服务器端需要在指定的端口上监听客户端的连接请求,并接受连接。
下面是一个简单的Socket服务器代码示例:
import java.io.*;
import java.net.*;
public class Server {
public static void main(String[] args) {
try {
// 创建ServerSocket对象,指定端口号
ServerSocket serverSocket = new ServerSocket(8888);
System.out.println("服务器已启动,等待客户端连接...");
// 监听客户端连接请求
Socket socket = serverSocket.accept();
System.out.println("客户端已连接,IP地址:" + socket.getInetAddress().getHostAddress());
// 获取输入流,用于接收客户端发送的数据
InputStream inputStream = socket.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String request = bufferedReader.readLine();
System.out.println("客户端发送的数据:" + request);
// 获取输出流,用于向客户端发送数据
OutputStream outputStream = socket.getOutputStream();
PrintWriter printWriter = new PrintWriter(outputStream);
printWriter.println("Hello, Client!");
printWriter.flush();
// 关闭资源
printWriter.close();
outputStream.close();
bufferedReader.close();
inputStream.close();
socket.close();
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
TCP协议
Socket通信使用的是TCP协议(传输控制协议)。TCP是一种可靠的、面向连接的协议,它提供了可靠的数据传输、流量控制和拥塞控制等功能。
TCP协议通过建立连接、传输数据和断开连接三个步骤实现数据的可靠传输。客户端发送连接请求,服务器接受请求并返回确认信息,然后双方开始传输数据。传输完成后,双方可以选择断开连接。
参考资料
- [Java Socket编程](
以上是关于Java Socket通信协议的简单介绍和示例代码。Socket通信是一种常用的网络通信方式,适用于各种网络应用程序的开发。通过Socket,不同计算机上的进程可以进行可靠的数据传输和通信。