Run the UDP client using the dg_cli function that broadcasts (Figure 20.5). How many replies do you receive? Are the replies always in the same order? Do the hosts on your network have synchronized clocks?
Put some printfs in Figure 20.10 after select returns to see whether it returns an error or readability for one of the two descriptors. When the alarm expires, does your system return EINTR or readability on the pipe?
Run a tool such as tcpdump, if available, and look for broadcast packets on your LAN; tcpdump ether broadcast is the tcpdump command. To which protocol suites do the broadcasts belong?