NAME |LIBRARY |SYNOPSIS |DESCRIPTION |STANDARDS |HISTORY |NOTES |SEE ALSO |COLOPHON | |
sockaddr(3type)sockaddr(3type)sockaddr, sockaddr_storage, sockaddr_in, sockaddr_in6, sockaddr_un, socklen_t, in_addr, in6_addr, in_addr_t, in_port_t, - socket address
Standard C library (libc)
#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 */};sockaddr Describes a socket address.sockaddr_storage A structure at least as large as any othersockaddr_* address structures. It's aligned so that a pointer to it can be cast as a pointer to othersockaddr_* structures and used to access its fields.socklen_t Describes the length of a socket address. This is an integer type of at least 32 bits.sa_family_t Describes a socket's protocol family. This is an unsigned integer type.Internet domain socketssockaddr_in Describes an IPv4 Internet domain socket address. Thesin_port andsin_addr members are stored in network byte order.sockaddr_in6 Describes an IPv6 Internet domain socket address. Thesin6_addr.s6_addr array is used to contain a 128-bit IPv6 address, stored in network byte order.UNIX domain socketssockaddr_un Describes a UNIX domain socket address.
POSIX.1-2008.
POSIX.1-2001.socklen_t was invented by POSIX. See alsoaccept(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.
socklen_t is also defined in<netdb.h>.sa_family_t is also defined in<netinet/in.h> and<sys/un.h>.
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)
This page is part of theman-pages (Linux kernel and C library user-space interface documentation) project. Information about the project can be found at ⟨https://www.kernel.org/doc/man-pages/⟩. If you have a bug report for this manual page, see ⟨https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/CONTRIBUTING⟩. This page was obtained from the tarball man-pages-6.15.tar.gz fetched from ⟨https://mirrors.edge.kernel.org/pub/linux/docs/man-pages/⟩ on 2025-08-11. 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 isnot part of the original manual page), send a mail to man-pages@man7.orgLinux man-pages 6.15 2025-05-17sockaddr(3type)HTML rendering created 2025-09-06 byMichael Kerrisk, author ofThe Linux Programming Interface. For details of in-depthLinux/UNIX system programming training courses that I teach, lookhere. Hosting byjambit GmbH. | ![]() |