sockaddr(3type) — Linux manual page


sockaddr(3type)                                          sockaddr(3type)

NAME         top

       sockaddr, sockaddr_storage, sockaddr_in, sockaddr_in6,
       sockaddr_un, socklen_t, in_addr, in6_addr, in_addr_t, in_port_t,
       - socket address

LIBRARY         top

       Standard C library (libc)

SYNOPSIS         top

       #include <sys/socket.h>

       struct sockaddr {
           sa_family_t     sa_family;      /* Address family */
           char            sa_data[];      /* Socket address */

       struct sockaddr_storage {
           sa_family_t     ss_family;      /* Address family */

       typedef /* ... */ socklen_t;
       typedef /* ... */ sa_family_t;

   Internet domain sockets
       #include <netinet/in.h>

       struct sockaddr_in {
           sa_family_t     sin_family;     /* AF_INET */
           in_port_t       sin_port;       /* Port number */
           struct in_addr  sin_addr;       /* IPv4 address */

       struct sockaddr_in6 {
           sa_family_t     sin6_family;    /* AF_INET6 */
           in_port_t       sin6_port;      /* Port number */
           uint32_t        sin6_flowinfo;  /* IPv6 flow info */
           struct in6_addr sin6_addr;      /* IPv6 address */
           uint32_t        sin6_scope_id;  /* Set of interfaces for a scope */

       struct in_addr {
           in_addr_t s_addr;

       struct in6_addr {
           uint8_t   s6_addr[16];

       typedef uint32_t in_addr_t;
       typedef uint16_t in_port_t;

   UNIX domain sockets
       #include <sys/un.h>

       struct sockaddr_un {
           sa_family_t     sun_family;     /* Address family */
           char            sun_path[];     /* Socket pathname */

DESCRIPTION         top

              Describes a socket address.

              A structure at least as large as any other sockaddr_*
              address structures.  It's aligned so that a pointer to it
              can be cast as a pointer to other sockaddr_* structures
              and used to access its fields.

              Describes the length of a socket address.  This is an
              integer type of at least 32 bits.

              Describes a socket's protocol family.  This is an unsigned
              integer type.

   Internet domain sockets
              Describes an IPv4 Internet domain socket address.  The
              sin_port and sin_addr members are stored in network byte

              Describes an IPv6 Internet domain socket address.  The
              sin6_addr.s6_addr array is used to contain a 128-bit IPv6
              address, stored in network byte order.

   UNIX domain sockets
              Describes a UNIX domain socket address.

STANDARDS         top


HISTORY         top


       socklen_t was invented by POSIX.  See also accept(2).

       These structures were invented before modern ISO C strict-
       aliasing rules.  If aliasing rules are applied strictly, these
       structures would be extremely difficult to use without invoking
       Undefined Behavior.  POSIX Issue 8 will fix this by requiring
       that implementations make sure that these structures can be
       safely used as they were designed.

NOTES         top

       socklen_t is also defined in <netdb.h>.

       sa_family_t is also defined in <netinet/in.h> and <sys/un.h>.

SEE ALSO         top

       accept(2), bind(2), connect(2), getpeername(2), getsockname(2),
       getsockopt(2), sendto(2), setsockopt(2), socket(2),
       socketpair(2), getaddrinfo(3), gethostbyaddr(3), getnameinfo(3),
       htonl(3), ipv6(7), socket(7)

COLOPHON         top

       This page is part of the man-pages (Linux kernel and C library
       user-space interface documentation) project.  Information about
       the project can be found at 
       ⟨⟩.  If you have a bug report
       for this manual page, see
       This page was obtained from the tarball man-pages-6.9.1.tar.gz
       fetched from
       ⟨⟩ on
       2024-06-26.  If you discover any rendering problems in this HTML
       version of the page, or you believe there is a better or more up-
       to-date source for the page, or you have corrections or
       improvements to the information in this COLOPHON (which is not
       part of the original manual page), send a mail to

Linux man-pages 6.9.1          2024-05-02                sockaddr(3type)