Add comments that describe the socket an timeout logic.
Run a server and client with oneshot by default.
Print statistics per default to give feedback to the user.
Consistent naming for timeouts: resend, wait, delay.
Rename read/write to recv/send in statistics.
Split send and receive errors in statistics.
Usage and getopt for connected sockets.
Check return code of every close(2).
Check correct error code.
Fix comment and usage.
Move read callback into separate function.
Return early in case of an recv error.
Rename efaddr to ef.
Add family, socktype, protocol to struct event_addr.
Initialize faddrlen before passing it ot recvfrom(2).
Pass correct argument to callback.  Void pointer are evil.
Start implementing connected server sockets.
Fix indent.
Store family, socktype, protocol in the local bind address event.
Fix getopt for connected.