网络编程Java Socket(UDP/TCP 套接字)
发布人:shili8
发布时间:2025-01-09 23:21
阅读次数:0
**Java Socket 编程**
Java Socket 是 Java 中用于网络通信的 API,提供了 TCP 和 UDP 套接字的实现。Socket 是一个抽象概念,代表了一个连接到服务器或客户端的端口。
### TCP 套接字TCP(Transmission Control Protocol)是一种面向连接的协议,它保证数据在传输过程中不会丢失或重复,并且按照发送顺序接收。TCP 套接字是 Java 中最常用的网络通信方式。
#### TCP Socket 客户端示例
javaimport java.net.*; import java.io.*; public class TcpClient { public static void main(String[] args) throws UnknownHostException, IOException { // 创建一个 TCP Socket 对象,连接到服务器的8000 端口 Socket socket = new Socket("localhost",8000); // 获取输入流和输出流 InputStream in = socket.getInputStream(); OutputStream out = socket.getOutputStream(); // 发送数据给服务器 String data = "Hello, Server!"; byte[] bytes = data.getBytes(); out.write(bytes); // 接收服务器的回复 byte[] responseBytes = new byte[1024]; int len = in.read(responseBytes); String response = new String(responseBytes,0, len); System.out.println("Server's Response: " + response); // 关闭 Socket 对象 socket.close(); } }
#### TCP Socket服务器示例
javaimport java.net.*; import java.io.*; public class TcpServer { public static void main(String[] args) throws IOException { // 创建一个 TCP ServerSocket 对象,监听8000 端口 ServerSocket server = new ServerSocket(8000); System.out.println("Server is running on port8000..."); while (true) { // 等待客户端连接 Socket socket = server.accept(); // 获取输入流和输出流 InputStream in = socket.getInputStream(); OutputStream out = socket.getOutputStream(); // 接收客户端的数据 byte[] bytes = new byte[1024]; int len = in.read(bytes); String data = new String(bytes,0, len); System.out.println("Client's Message: " + data); // 回复客户端 String response = "Hello, Client!"; byte[] responseBytes = response.getBytes(); out.write(responseBytes); // 关闭 Socket 对象 socket.close(); } } }
### UDP 套接字UDP(User Datagram Protocol)是一种无连接的协议,它不保证数据在传输过程中不会丢失或重复,并且不按照发送顺序接收。UDP 套接字是 Java 中用于实时通信和广播的网络通信方式。
#### UDP Socket 客户端示例
javaimport java.net.*; import java.io.*; public class UdpClient { public static void main(String[] args) throws UnknownHostException, IOException { // 创建一个 UDP DatagramSocket 对象,连接到服务器的8000 端口 DatagramSocket socket = new DatagramSocket(); // 获取输入流和输出流 byte[] data = "Hello, Server!".getBytes(); DatagramPacket packet = new DatagramPacket(data, data.length, InetAddress.getByName("localhost"),8000); // 发送数据给服务器 socket.send(packet); // 接收服务器的回复 byte[] responseBytes = new byte[1024]; DatagramPacket responsePacket = new DatagramPacket(responseBytes, responseBytes.length); socket.receive(responsePacket); String response = new String(responseBytes,0, responsePacket.getLength()); System.out.println("Server's Response: " + response); // 关闭 Socket 对象 socket.close(); } }
#### UDP Socket服务器示例
javaimport java.net.*; import java.io.*; public class UdpServer { public static void main(String[] args) throws IOException { // 创建一个 UDP ServerSocket 对象,监听8000 端口 DatagramSocket server = new DatagramSocket(8000); System.out.println("Server is running on port8000..."); while (true) { // 等待客户端连接 byte[] bytes = new byte[1024]; DatagramPacket packet = new DatagramPacket(bytes, bytes.length); server.receive(packet); String data = new String(bytes,0, packet.getLength()); System.out.println("Client's Message: " + data); // 回复客户端 String response = "Hello, Client!"; byte[] responseBytes = response.getBytes(); DatagramPacket responsePacket = new DatagramPacket(responseBytes, responseBytes.length, InetAddress.getByName("localhost"),8000); server.send(responsePacket); // 关闭 Socket 对象 server.close(); } } }
### 总结Java Socket 是 Java 中用于网络通信的 API,提供了 TCP 和 UDP 套接字的实现。TCP 套接字是面向连接的协议,它保证数据在传输过程中不会丢失或重复,并且按照发送顺序接收。UDP 套接字是无连接的协议,它不保证数据在传输过程中不会丢失或重复,并且不按照发送顺序接收。Java Socket API 提供了客户端和服务器端的实现示例,方便开发者快速上手网络通信编程。