浏览 483
                         扫码
                        
                    
                    
                    UDP(User Datagram Protocol)是一种无连接的通信协议,它使用数据报来进行通信。在UDP通信中,数据包可以以任意顺序到达,并且可能丢失或重复。
下面是一个简单的UDP通信的Java程序示例:
- 创建一个UDP服务器端程序:
 
import java.net.*;
public class UDPServer {
    public static void main(String[] args) {
        try {
            DatagramSocket serverSocket = new DatagramSocket(9876);
            byte[] receiveData = new byte[1024];
            while (true) {
                DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
                serverSocket.receive(receivePacket);
                String message = new String(receivePacket.getData(), 0, receivePacket.getLength());
                System.out.println("Received message: " + message);
                InetAddress IPAddress = receivePacket.getAddress();
                int port = receivePacket.getPort();
                String replyMessage = "Hello from server";
                byte[] sendData = replyMessage.getBytes();
                DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, port);
                serverSocket.send(sendPacket);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
- 创建一个UDP客户端程序:
 
import java.net.*;
public class UDPClient {
    public static void main(String[] args) {
        try {
            DatagramSocket clientSocket = new DatagramSocket();
            InetAddress IPAddress = InetAddress.getByName("localhost");
            int port = 9876;
            String message = "Hello from client";
            byte[] sendData = message.getBytes();
            DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, port);
            clientSocket.send(sendPacket);
            byte[] receiveData = new byte[1024];
            DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
            clientSocket.receive(receivePacket);
            String replyMessage = new String(receivePacket.getData(), 0, receivePacket.getLength());
            System.out.println("Received message: " + replyMessage);
            clientSocket.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
在这个示例中,UDP服务器端程序接收来自客户端的消息并回复一个消息,UDP客户端程序向服务器端发送一个消息并接收服务器端的回复消息。
要运行这个示例程序,首先需要运行UDP服务器端程序,然后再运行UDP客户端程序。您可以在本地计算机上运行这两个程序,也可以在不同的计算机上运行这两个程序。确保在运行程序之前关闭防火墙或允许UDP通信通过防火墙。
希望这个示例对您有所帮助,如果有任何问题,请随时询问!
