Java之Socket
**Java 之 Socket**
Socket 是一种用于网络通信的 API,允许 Java 程序通过 TCP/IP 协议与其他程序进行通信。Socket 提供了一个抽象层,使得开发者可以不必关心底层的网络协议细节,就能实现网络通信。
###什么是 SocketSocket(套接字)是一种用于网络通信的 API,允许 Java 程序通过 TCP/IP 协议与其他程序进行通信。Socket 提供了一个抽象层,使得开发者可以不必关心底层的网络协议细节,就能实现网络通信。
### Socket 的类型Java 中有两种主要的 Socket 类型:
* **TCP Socket**:使用 TCP 协议,保证数据传输的可靠性和顺序。
* **UDP Socket**:使用 UDP 协议,不保证数据传输的可靠性和顺序。
### Socket 的生命周期Socket 的生命周期包括以下几个阶段:
1. **创建 Socket**:通过 `ServerSocket` 或 `Socket` 类创建一个 Socket 对象。
2. **连接**:如果是客户端,需要连接到服务器端;如果是服务器端,则等待客户端的连接请求。
3. **数据传输**:通过 `InputStream` 和 `OutputStream` 来读取和写入数据。
4. **关闭 Socket**:当通信完成后,需要关闭 Socket 对象。
### Java 中的 Socket APIJava 提供了以下几个类来支持 Socket 通信:
* **ServerSocket**:用于创建服务器端的 Socket。
* **Socket**:用于创建客户端或服务器端的 Socket。
* **InputStream**:用于读取数据。
* **OutputStream**:用于写入数据。
###代码示例#### TCP Server
javaimport java.net.*; import java.io.*; public class TCPServer { public static void main(String[] args) throws IOException { // 创建服务器端的 Socket 对象 ServerSocket serverSocket = new ServerSocket(8000); System.out.println("服务器正在等待客户端连接..."); // 等待客户端的连接请求 Socket socket = serverSocket.accept(); System.out.println("客户端已连接"); //读取数据 InputStream inputStream = socket.getInputStream(); byte[] buffer = new byte[1024]; int len = inputStream.read(buffer); String data = new String(buffer,0, len); System.out.println("收到来自客户端的消息:" + data); // 回复给客户端 OutputStream outputStream = socket.getOutputStream(); String reply = "Hello,Client!"; outputStream.write(reply.getBytes()); // 关闭 Socket 对象 socket.close(); serverSocket.close(); } }
#### TCP Client
javaimport java.net.*; import java.io.*; public class TCPClient { public static void main(String[] args) throws IOException { // 创建客户端的 Socket 对象 Socket socket = new Socket("localhost",8000); System.out.println("已连接到服务器"); // 写入数据 OutputStream outputStream = socket.getOutputStream(); String data = "Hello,Server!"; outputStream.write(data.getBytes()); //读取回复 InputStream inputStream = socket.getInputStream(); byte[] buffer = new byte[1024]; int len = inputStream.read(buffer); String reply = new String(buffer,0, len); System.out.println("收到来自服务器的消息:" + reply); // 关闭 Socket 对象 socket.close(); } }
### 总结Socket 是一种用于网络通信的 API,允许 Java 程序通过 TCP/IP 协议与其他程序进行通信。Java 提供了 `ServerSocket` 和 `Socket` 类来支持 Socket 通信。通过 Socket,可以实现客户端和服务器端之间的数据传输。