How to create a Udp Client in Java

UDP stands for User Datagram Protocol, a connectionless protocol that allows sending and receiving data packets without establishing a connection. UDP is useful for applications that require low latency, such as online games or voice chat.

To create a UDP client in Java:

You need to use the DatagramSocket and DatagramPacket classes from the
java.net package. A DatagramSocket is a socket that
can send and receive datagram packets. A DatagramPacket is a data
container that holds the data to be sent or received, as well as the
destination or source address and port.

To send a datagram packet:

You need to create an object and bind it to a local
port. Then, create a DatagramPacket object with the data byte
array, the length of the data, the destination address, and the port. Finally,
call the send method of the DatagramSocket object
with the DatagramPacket object as an argument.

To receive a datagram packet:

You need to create an object and bind it to a local
port. Then, create an object with an empty byte
array and the length of the array. Finally, call the
receive method of the DatagramSocket object with the
DatagramPacketobject as an argument. The
receive method will block until a packet is received, filling the
byte array with the data.


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

public class UDPClient {
    public static void main(String[] args) throws Exception {
        // Create a datagram socket and bind it to any available port
        DatagramSocket socket = new DatagramSocket();

        // Create a byte array with the message to send
        byte[] message = "Hello UDP server".getBytes();

        // Create a datagram packet with the message, the destination address, and port
        InetAddress address = InetAddress.getByName("localhost");
        int port = 1234;
        DatagramPacket packet = new DatagramPacket(message, message.length, address, port);

        // Send the packet
        socket.send(packet);

        // Create an empty byte array for receiving data
        byte[] buffer = new byte[1024];

        // Create a datagram packet for receiving data
        packet = new DatagramPacket(buffer, buffer.length);

        // Receive the packet
        socket.receive(packet);

        // Convert the received data to a string
        String response = new String(packet.getData(), 0, packet.getLength());

        // Print the response
        System.out.println("Received from server: " + response);

        // Close the socket
        socket.close();
    }
}
Share this Post

Leave a Reply

Your email address will not be published. Required fields are marked *