I wrote:
I have a Fedora 20 machine which is receiving UDP broadcast packets at regular intervals on a strange high port. No program is presently listening for these packets. If I run, "tcpdump -i eth0 port 29531", I see each of the packets arriving just as I expect. Note, the packets are not empty and contain mostly ASCII characters.
But if I then run, "nc -lu 29531", I don't see anything! Why not? What obvious thing am I missing?
This same operation works better (but still not as I expect) on Fedora 14. NC shows one packet arriving but then doesn't show any more.
Running NC under strace on both machines, I see F14 NC seems to use poll(2). It outputs one packet then hangs on poll. F20 NC seems to use select(2). It hangs on the first call.
SELinux and the firewall are disabled on both machines.
Rick Stevens answered:
You may need to use "nc -lu --recv-only 29531" so the system doesn't try to reply to the packet. Perhaps it's better to use wireshark or tcpdump to copy the data to a file and examine it.
Thanks. But that doesn't make any obvious difference. Still no output.
If examining the packets were my only concern, tcpdump would do just fine. But I actually have a program which would like to receive those packets and doesn't. Using NC is part of the investigation to discover why not. But NC doesn't seem to get the packets, either.