Java Socket编程的基本流程可以概括为以下几个步骤:创建服务器,创建客户端,建立连接,数据交换,关闭连接。下面是对这些步骤的详细解释:
一、创建服务器
创建 ServerSocket 对象:首先,服务器需要创建一个 ServerSocket 对象,并绑定到一个特定的端口上。ServerSocket 对象负责监听来自客户端的连接请求。
java
ServerSocket serverSocket = new ServerSocket(port);
其中,port 是服务器需要监听的端口号。
二、创建客户端
创建 Socket 对象:客户端需要创建一个 Socket 对象,并指定要连接的服务器地址和端口号。
java
Socket socket = new Socket(serverAddress, serverPort);
其中,serverAddress 是服务器的 IP 地址或主机名,serverPort 是服务器监听的端口号。
三、建立连接
服务器接受客户端连接:当客户端发起连接请求时,服务器端的 ServerSocket 对象会调用 accept() 方法来接受这个连接,并返回一个 Socket 对象,这个对象代表与客户端的连接。
java
Socket clientSocket = serverSocket.accept();
accept() 方法是一个阻塞方法,如果没有客户端连接,它将一直等待。
四、数据交换
获取输入/输出流:一旦连接建立,服务器和客户端就可以通过各自的 Socket 对象获取输入/输出流,进行数据的发送和接收。
java
// 服务器端获取输入流
InputStream inputStream = clientSocket.getInputStream();
// 客户端获取输出流
OutputStream outputStream = socket.getOutputStream();
发送和接收数据:通过输入/输出流,服务器和客户端可以发送和接收数据。发送数据时,将数据写入输出流;接收数据时,从输入流中读取数据。
java
// 服务器端发送数据
outputStream.write(“Hello, client!”.getBytes());
// 客户端接收数据
byte[] buffer = new byte[1024];
int length = inputStream.read(buffer);
String message = new String(buffer, 0, length);
五、关闭连接
关闭 Socket 和 ServerSocket:当数据交换完成后,服务器和客户端都需要关闭各自的 Socket 对象,以及服务器端的 ServerSocket 对象。
java
// 客户端关闭 Socket
socket.close();
// 服务器关闭 Socket 和 ServerSocket
clientSocket.close();
serverSocket.close();
以上就是 Java Socket 编程的基本流程。需要注意的是,实际编程中可能还需要考虑异常处理、多线程处理、数据格式等问题。同时,Java 的 NIO(非阻塞 I/O)和 NIO2(也称为 New I/O 或 java.nio.channels 包)也提供了更高级、更灵活的 I/O 操作方式,可以根据具体需求进行选择。