There is no connect()/accept() for UDP since is is connection-less.
This neatly illustrates one of the problems with answering off-topic
questions.
While UDP *is* connectionless, BSD-based systems *do* allow connect()
calls. "Connecting" a UDP socket to a particular foreign address
allows future data transmission without re-specifying the same
remote address every time. This is not only a convenience, it also
allows -- and this ties in to comp.lang.c at least -- one to use
ordinary write operations on the descriptor afterward. Combine
this with the POSIX fdopen() call, and you get an ordinary C stream
on which regular fwrite() and fprintf() operations work.
Incidentally, I have argued in the past (and still believe) that
having separate bind(), connect(), and listen() calls is a mistake.
There should be a single call that combines all three operations,
with the operands being optional where irrelevant. This would
completely eliminate the need for the SO_REUSEADDR socket option.
If you want to run a generic server, supply port and listen-queue-length;
if you want to run a generic client, supply server address and
port; if you want to run a specialty application (as, e.g., FTP
does for its data sockets), supply both client and server ports
and/or addresses as required.