java中UDP简单聊天程序实例代码


下面是一个Java中UDP简单聊天程序的基本实例。这个示例包括一个服务器端和一个客户端。服务器端接收来自客户端的消息,并打印到控制台。客户端发送消息到服务器端。

### UDP服务器端代码


import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;

public class UDPServer {
    public static void main(String[] args) {
        DatagramSocket socket = null;

        try {
            socket = new DatagramSocket(9876); // 创建DatagramSocket,并绑定到9876端口
            byte[] receiveData = new byte[1024];

            while (true) {
                DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
                socket.receive(receivePacket); // 接收数据

                String sentence = new String(receivePacket.getData(), 0, receivePacket.getLength());
                System.out.println("RECEIVED: " + sentence);

                // 这里可以添加向客户端发送响应的代码
            }
        } catch (SocketException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (socket != null) {
                socket.close();
            }
        }
    }
}

### UDP客户端代码


import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

public class UDPClient {
    public static void main(String[] args) {
        DatagramSocket clientSocket = null;

        try {
            clientSocket = new DatagramSocket();
            InetAddress IPAddress = InetAddress.getByName("localhost");
            byte[] sendData = new byte[1024];
            String sentence = "Hello from UDP client";
            sendData = sentence.getBytes();

            DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, 9876);
            clientSocket.send(sendPacket); // 发送数据

            // 这里可以添加接收服务器响应的代码

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (clientSocket != null) {
                clientSocket.close();
            }
        }
    }
}

**注意**:

- 服务器端和客户端都需要处理异常,并确保资源(如`DatagramSocket`)在使用后被正确关闭。

- 客户端通过指定服务器的IP地址和端口号来发送数据。在这个例子中,我们使用`localhost`作为服务器地址,端口号为`9876`。

- 服务器端在无限循环中接收数据,这意味着它将持续监听端口,直到程序被外部方式(如用户中断)停止。

- 客户端发送一条固定消息后结束,但在实际应用中,它可能需要根据用户输入或其他逻辑来发送消息。

- 这两个示例仅包含基本功能,没有添加错误处理、数据验证或用户交互等高级特性。