How to generate UDP packet

I want to generate UDP packet to test a program, something equivalent to using telnet to test TCP port (Can telnet generate UDP packet?)

How can I do this?


Solution 1:

One word: Netcat

Netcat is the go-to tool for this sort of thing.

You can thrash whatever port you choose with UDP packets with something like:

nc -u host.example.com 53 < /dev/random

(53 is your port number)

Or you can send an actual file, or tell it to bind that port and listen as a service, or whatever you like.

Solution 2:

If you want to merely send one UDP packet with some specified data, as opposed to Satanicpuppy's answer which continuously sends random data, you can do:

echo "foo" | nc -w1 -u 111.22.333.4 20000

Solution 3:

This one is good if you are trying to work with large packets. netcat uses 1024 bytes in UDP mode.

nping --udp -p 2090 111.22.333.4 --data-length 1550

UDP mode, to port 2090 at address, with a packet length of 1550 bytes.

This is from the nmap package, or is sometimes packaged as nping separately.

Further info is at https://nmap.org/book/nping-man-general-operation.html

Solution 4:

If you're using Bash, you can use its /dev/udp virtual filesystem, like this:

echo -n "hello" >/dev/udp/localhost/8000

Shamelessly re-used from this answer to "How to send only one UDP packet with netcat?"