NAME
UDP — Internet User Datagram Protocol
SYNOPSIS
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
s = socket(AF_INET, SOCK_DGRAM, 0);
s = socket(AF_INET6, SOCK_DGRAM, 0);
DESCRIPTION
UDP
is a simple, unreliable datagram protocol used to support the
SOCK_DGRAM
socket type for the internet protocol family.
UDP
sockets are connectionless, and are normally used with the
sendto()
and
recvfrom()
calls (see
send(2)
and
recv(2).
The
connect()
call can also be used to simulate a connection (see
connect(2).
When used in this manner,
it fixes the destination for future transmitted packets
(in which case the
send()
or
write()
system calls can be used),
as well as designating the source from which packets are received.
The
recv()
and
read()
calls can be used at any time if the source of the message is unimportant.
UDP
address formats are identical to those used by
TCP.
In particular,
UDP
requires a port identifier
in addition to the normal Internet address format.
Note that the
UDP
port domain is separate from the
TCP
port domain (in other words, a
UDP
port cannot be connected to a
TCP
port).
The default send buffer size for UDP sockets is 65535 bytes.
The default receive buffer size for UDP sockets is 2147483647 bytes.
The send and receive buffer sizes for UDP sockets
can be set by using the
SO_SNDBUF
and
SO_RCVBUF
options of the
setsockopt()
system call or the
XTI_SNDBUF
and
XTI_RCVBUF
options of the
t_optmgmt()
system call.
The maximum size for these buffers
is 2147483647 bytes. The maximum receive buffer size may be
lowered using the
ndd
parameter
udp_recv_hiwater_max.
The maximum message size for a UDP datagram
socket is limited by the lesser of the maximum
size of an IP datagram and the size of the UDP
datagram socket buffer.
The maximum size of an IP
datagram limits the maximum message size of a UDP
message to 65507 bytes. Therefore, using the maximum socket
buffer size will allow multiple maximum-sized
messages to be placed on the send queue. The default
inbound and outbound message size limit for a UDP
datagram socket is 65535 bytes.
The maximum
message size for a UDP broadcast is limited by the
MTU size of the underlying link.
ERRORS
One of the following errors may be returned in
errno
if a
socket operation fails.
For a more detailed list of errors, see the man pages for specific
system calls.
- [EISCONN]
Attempt to send a datagram
with the destination address specified,
when the socket is already connected.
- [ENOBUFS]
No buffer space is available for an internal data structure.
- [EADDRINUSE]
Attempt to create a socket with a port which has already been allocated.
- [EADDRNOTAVAIL]
Attempt to create a socket with a network address
for which no network interface exists.
AUTHOR
The socket interfaces to UDP
were developed by the University of California, Berkeley.