---
name: "udp"
section: "4"
platform: "openbsd"
package: "man"
version: "8.0-current-20261101"
release: "OpenBSD 8.0-current (2026-11-01)"
platforms: ["linux", "freebsd", "openbsd", "macos"]
url: "https://new.carta.tech/udp/4"
---

# udp(4)

Internet User Datagram Protocol

## NAME

**udp** – Internet User Datagram Protocol

## SYNOPSIS

**#include \<sys/socket.h\>**

**#include \<netinet/in.h\>**

*int*\

**socket**(*AF\_INET*, *SOCK\_DGRAM*, *0*);

*int*\

**socket**(*AF\_INET6*, *SOCK\_DGRAM*, *0*);

## DESCRIPTION

UDP is a simple, unreliable datagram protocol which is used to support the SOCK\_DGRAM abstraction for the Internet protocol family. UDP sockets are connectionless, and are normally used with the [sendto(2)](/sendto/2.md) and [recvfrom(2)](/recvfrom/2.md) calls, though the [connect(2)](/connect/2.md) call may also be used to fix the destination for future packets (in which case the [recv(2)](/recv/2.md) or [read(2)](/read/2.md) and [send(2)](/send/2.md) or [write(2)](/write/2.md) system calls may be used).

UDP address formats are identical to those used by TCP. In particular UDP provides a port identifier in addition to the normal Internet address format. Note that the UDP port space is separate from the TCP port space (i.e. a UDP port may not be “connected” to a TCP port). In addition broadcast packets may be sent (assuming the underlying network supports this) by using a reserved “broadcast address”; this address is network interface dependent.

Options at the IP transport level may be used with UDP; see [ip(4)](/ip/4.md) or [ip6(4)](/ip6/4.md).

## DIAGNOSTICS

A socket operation may fail with one of the following errors returned:

- \[EISCONN\]

  when trying to establish a connection on a socket which already has one, or when trying to send a datagram with the destination address specified and the socket is already connected;

- \[ENOTCONN\]

  when trying to send a datagram, but no destination address is specified, and the socket hasn't been connected;

- \[ENOBUFS\]

  when the system runs out of memory for an internal data structure;

- \[EADDRINUSE\]

  when an attempt is made to create a socket with a port which has already been allocated;

- \[EADDRNOTAVAIL\]

  when an attempt is made to create a socket with a network address for which no network interface exists.

## SEE ALSO

[getsockopt(2)](/getsockopt/2.md), [recv(2)](/recv/2.md), [send(2)](/send/2.md), [socket(2)](/socket/2.md), [inet(4)](/inet/4.md), [inet6(4)](/inet6/4.md), [ip(4)](/ip/4.md), [ip6(4)](/ip6/4.md), [netintro(4)](/netintro/4.md)

## HISTORY

The **udp** protocol appeared in 4.2BSD.
