Search code examples
javaudpdatagram

Sending DatagramPacket by UDP


I'm trying to send some data by UDP. This is my code:

public class UDP {
public static void main(String args[]) throws IOException { 
    InetAddress inetAddress = InetAddress.getByName("239.255.42.99");
    int PORT = 2225;
    int BUFFER_SIZE = 10;
    DatagramSocket datagramSocket = new DatagramSocket(PORT, inetAddress);
    byte[] buf = new byte[BUFFER_SIZE];
    String message = "0123456789";
    buf = message.getBytes();
    DatagramPacket datagramPacket = new DatagramPacket(buf, buf.length);

    datagramPacket = new DatagramPacket(buf, buf.length);
    datagramPacket.setAddress(inetAddress);
    datagramPacket.setPort(PORT);

    datagramSocket.send(datagramPacket);
    datagramSocket.setSoTimeout(1010);
}
}

I have this error:

Exception in thread "main" java.io.IOException: Invalid argument
at java.net.PlainDatagramSocketImpl.send(Native Method)
at java.net.DatagramSocket.send(DatagramSocket.java:698)
at UDP.main(UDP.java:21)

Anyone know what I do wrong?


Solution

  • Try it this way:

    public static void main(String args[]) throws IOException {
        InetAddress inetAddress = InetAddress.getByName("239.255.42.99");
        int PORT = 2225;
        int BUFFER_SIZE = 10;
        DatagramSocket datagramSocket = new DatagramSocket();
        byte[] buf = new byte[BUFFER_SIZE];
        String message = "0123456789";
        buf = message.getBytes();
        DatagramPacket datagramPacket = new DatagramPacket(buf, buf.length, inetAddress, PORT);
    
        datagramSocket.send(datagramPacket);
        datagramSocket.setSoTimeout(1010);
    }