summaryrefslogtreecommitdiffstats
path: root/man2/socket.2
diff options
context:
space:
mode:
Diffstat (limited to 'man2/socket.2')
-rw-r--r--man2/socket.2493
1 files changed, 0 insertions, 493 deletions
diff --git a/man2/socket.2 b/man2/socket.2
deleted file mode 100644
index b83bd5b..0000000
--- a/man2/socket.2
+++ /dev/null
@@ -1,493 +0,0 @@
-'\" t
-.\" Copyright (c) 1983, 1991 The Regents of the University of California.
-.\" All rights reserved.
-.\"
-.\" SPDX-License-Identifier: BSD-4-Clause-UC
-.\"
-.\" $Id: socket.2,v 1.4 1999/05/13 11:33:42 freitag Exp $
-.\"
-.\" Modified 1993-07-24 by Rik Faith <faith@cs.unc.edu>
-.\" Modified 1996-10-22 by Eric S. Raymond <esr@thyrsus.com>
-.\" Modified 1998, 1999 by Andi Kleen <ak@muc.de>
-.\" Modified 2002-07-17 by Michael Kerrisk <mtk.manpages@gmail.com>
-.\" Modified 2004-06-17 by Michael Kerrisk <mtk.manpages@gmail.com>
-.\"
-.TH socket 2 2024-01-28 "Linux man-pages 6.7"
-.SH NAME
-socket \- create an endpoint for communication
-.SH LIBRARY
-Standard C library
-.RI ( libc ", " \-lc )
-.SH SYNOPSIS
-.nf
-.B #include <sys/socket.h>
-.P
-.BI "int socket(int " domain ", int " type ", int " protocol );
-.fi
-.SH DESCRIPTION
-.BR socket ()
-creates an endpoint for communication and returns a file descriptor
-that refers to that endpoint.
-The file descriptor returned by a successful call will be
-the lowest-numbered file descriptor not currently open for the process.
-.P
-The
-.I domain
-argument specifies a communication domain; this selects the protocol
-family which will be used for communication.
-These families are defined in
-.IR <sys/socket.h> .
-The formats currently understood by the Linux kernel include:
-.TS
-tab(:);
-l1 lw40 l.
-Name:Purpose:Man page
-T{
-.B AF_UNIX
-T}:T{
-Local communication
-T}:T{
-.BR unix (7)
-T}
-T{
-.B AF_LOCAL
-T}:T{
-Synonym for
-.B AF_UNIX
-T}:T{
-T}
-T{
-.B AF_INET
-T}:IPv4 Internet protocols:T{
-.BR ip (7)
-T}
-T{
-.B AF_AX25
-T}:T{
-Amateur radio AX.25 protocol
-T}:T{
-.\" Part of ax25-tools
-.BR ax25 (4)
-T}
-T{
-.B AF_IPX
-T}:IPX \- Novell protocols:
-T{
-.B AF_APPLETALK
-T}:AppleTalk:T{
-.BR ddp (7)
-T}
-T{
-.B AF_X25
-T}:ITU-T X.25 / ISO/IEC\~8208 protocol:T{
-.BR x25 (7)
-T}
-T{
-.B AF_INET6
-T}:IPv6 Internet protocols:T{
-.BR ipv6 (7)
-T}
-T{
-.B AF_DECnet
-T}:T{
-DECet protocol sockets
-T}
-T{
-.B AF_KEY
-T}:T{
-Key management protocol, originally developed for usage with IPsec
-T}
-T{
-.B AF_NETLINK
-T}:T{
-Kernel user interface device
-T}:T{
-.BR netlink (7)
-T}
-T{
-.B AF_PACKET
-T}:T{
-Low-level packet interface
-T}:T{
-.BR packet (7)
-T}
-T{
-.B AF_RDS
-T}:T{
-.\" commit: 639b321b4d8f4e412bfbb2a4a19bfebc1e68ace4
-Reliable Datagram Sockets (RDS) protocol
-T}:T{
-.\" rds-tools: https://github.com/oracle/rds-tools/blob/master/rds.7
-.\" rds-tools: https://github.com/oracle/rds-tools/blob/master/rds-rdma.7
-.BR rds (7)
-.br
-.BR rds\-rdma (7)
-T}
-T{
-.B AF_PPPOX
-T}:T{
-Generic PPP transport layer, for setting up L2 tunnels
-(L2TP and PPPoE)
-T}
-T{
-.B AF_LLC
-T}:T{
-.\" linux-history commit: 34beb106cde7da233d4df35dd3d6cf4fee937caa
-Logical link control (IEEE 802.2 LLC) protocol
-T}
-T{
-.B AF_IB
-T}:T{
-.\" commits: 8d36eb01da5d371f..ce117ffac2e93334
-InfiniBand native addressing
-T}
-T{
-.B AF_MPLS
-T}:T{
-.\" commits: 0189197f441602acdca3f97750d392a895b778fd
-Multiprotocol Label Switching
-T}
-T{
-.B AF_CAN
-T}:T{
-.\" commits: 8dbde28d9711475a..5423dd67bd0108a1
-Controller Area Network automotive bus protocol
-T}
-T{
-.B AF_TIPC
-T}:T{
-.\" commits: b97bf3fd8f6a16966d4f18983b2c40993ff937d4
-TIPC, "cluster domain sockets" protocol
-T}
-T{
-.B AF_BLUETOOTH
-T}:T{
-.\" commits: 8d36eb01da5d371f..ce117ffac2e93334
-Bluetooth low-level socket protocol
-T}
-T{
-.B AF_ALG
-T}:T{
-.\" commit: 03c8efc1ffeb6b82a22c1af8dd908af349563314
-Interface to kernel crypto API
-T}
-T{
-.B AF_VSOCK
-T}:T{
-.\" commit: d021c344051af91f42c5ba9fdedc176740cbd238
-VSOCK (originally "VMWare VSockets") protocol
-for hypervisor-guest communication
-T}:T{
-.BR vsock (7)
-T}
-T{
-.B AF_KCM
-T}:T{
-.\" commit: 03c8efc1ffeb6b82a22c1af8dd908af349563314
-KCM (kernel connection multiplexer) interface
-T}
-T{
-.B AF_XDP
-T}:T{
-.\" commit: c0c77d8fb787cfe0c3fca689c2a30d1dad4eaba7
-XDP (express data path) interface
-T}
-.TE
-.P
-Further details of the above address families,
-as well as information on several other address families, can be found in
-.BR address_families (7).
-.P
-The socket has the indicated
-.IR type ,
-which specifies the communication semantics.
-Currently defined types
-are:
-.TP 16
-.B SOCK_STREAM
-Provides sequenced, reliable, two-way, connection-based byte streams.
-An out-of-band data transmission mechanism may be supported.
-.TP
-.B SOCK_DGRAM
-Supports datagrams (connectionless, unreliable messages of a fixed
-maximum length).
-.TP
-.B SOCK_SEQPACKET
-Provides a sequenced, reliable, two-way connection-based data
-transmission path for datagrams of fixed maximum length; a consumer is
-required to read an entire packet with each input system call.
-.TP
-.B SOCK_RAW
-Provides raw network protocol access.
-.TP
-.B SOCK_RDM
-Provides a reliable datagram layer that does not guarantee ordering.
-.TP
-.B SOCK_PACKET
-Obsolete and should not be used in new programs;
-see
-.BR packet (7).
-.P
-Some socket types may not be implemented by all protocol families.
-.P
-Since Linux 2.6.27, the
-.I type
-argument serves a second purpose:
-in addition to specifying a socket type,
-it may include the bitwise OR of any of the following values,
-to modify the behavior of
-.BR socket ():
-.TP 16
-.B SOCK_NONBLOCK
-Set the
-.B O_NONBLOCK
-file status flag on the open file description (see
-.BR open (2))
-referred to by the new file descriptor.
-Using this flag saves extra calls to
-.BR fcntl (2)
-to achieve the same result.
-.TP
-.B SOCK_CLOEXEC
-Set the close-on-exec
-.RB ( FD_CLOEXEC )
-flag on the new file descriptor.
-See the description of the
-.B O_CLOEXEC
-flag in
-.BR open (2)
-for reasons why this may be useful.
-.P
-The
-.I protocol
-specifies a particular protocol to be used with the socket.
-Normally only a single protocol exists to support a particular
-socket type within a given protocol family, in which case
-.I protocol
-can be specified as 0.
-However, it is possible that many protocols may exist, in
-which case a particular protocol must be specified in this manner.
-The protocol number to use is specific to the \*(lqcommunication domain\*(rq
-in which communication is to take place; see
-.BR protocols (5).
-See
-.BR getprotoent (3)
-on how to map protocol name strings to protocol numbers.
-.P
-Sockets of type
-.B SOCK_STREAM
-are full-duplex byte streams.
-They do not preserve
-record boundaries.
-A stream socket must be in
-a
-.I connected
-state before any data may be sent or received on it.
-A connection to
-another socket is created with a
-.BR connect (2)
-call.
-Once connected, data may be transferred using
-.BR read (2)
-and
-.BR write (2)
-calls or some variant of the
-.BR send (2)
-and
-.BR recv (2)
-calls.
-When a session has been completed a
-.BR close (2)
-may be performed.
-Out-of-band data may also be transmitted as described in
-.BR send (2)
-and received as described in
-.BR recv (2).
-.P
-The communications protocols which implement a
-.B SOCK_STREAM
-ensure that data is not lost or duplicated.
-If a piece of data for which
-the peer protocol has buffer space cannot be successfully transmitted
-within a reasonable length of time, then the connection is considered
-to be dead.
-When
-.B SO_KEEPALIVE
-is enabled on the socket the protocol checks in a protocol-specific
-manner if the other end is still alive.
-A
-.B SIGPIPE
-signal is raised if a process sends or receives
-on a broken stream; this causes naive processes,
-which do not handle the signal, to exit.
-.B SOCK_SEQPACKET
-sockets employ the same system calls as
-.B SOCK_STREAM
-sockets.
-The only difference is that
-.BR read (2)
-calls will return only the amount of data requested,
-and any data remaining in the arriving packet will be discarded.
-Also all message boundaries in incoming datagrams are preserved.
-.P
-.B SOCK_DGRAM
-and
-.B SOCK_RAW
-sockets allow sending of datagrams to correspondents named in
-.BR sendto (2)
-calls.
-Datagrams are generally received with
-.BR recvfrom (2),
-which returns the next datagram along with the address of its sender.
-.P
-.B SOCK_PACKET
-is an obsolete socket type to receive raw packets directly from the
-device driver.
-Use
-.BR packet (7)
-instead.
-.P
-An
-.BR fcntl (2)
-.B F_SETOWN
-operation can be used to specify a process or process group to receive a
-.B SIGURG
-signal when the out-of-band data arrives or
-.B SIGPIPE
-signal when a
-.B SOCK_STREAM
-connection breaks unexpectedly.
-This operation may also be used to set the process or process group
-that receives the I/O and asynchronous notification of I/O events via
-.BR SIGIO .
-Using
-.B F_SETOWN
-is equivalent to an
-.BR ioctl (2)
-call with the
-.B FIOSETOWN
-or
-.B SIOCSPGRP
-argument.
-.P
-When the network signals an error condition to the protocol module (e.g.,
-using an ICMP message for IP) the pending error flag is set for the socket.
-The next operation on this socket will return the error code of the pending
-error.
-For some protocols it is possible to enable a per-socket error queue
-to retrieve detailed information about the error; see
-.B IP_RECVERR
-in
-.BR ip (7).
-.P
-The operation of sockets is controlled by socket level
-.IR options .
-These options are defined in
-.IR <sys/socket.h> .
-The functions
-.BR setsockopt (2)
-and
-.BR getsockopt (2)
-are used to set and get options.
-.SH RETURN VALUE
-On success, a file descriptor for the new socket is returned.
-On error, \-1 is returned, and
-.I errno
-is set to indicate the error.
-.SH ERRORS
-.TP
-.B EACCES
-Permission to create a socket of the specified type and/or protocol
-is denied.
-.TP
-.B EAFNOSUPPORT
-The implementation does not support the specified address family.
-.TP
-.B EINVAL
-Unknown protocol, or protocol family not available.
-.TP
-.B EINVAL
-.\" Since Linux 2.6.27
-Invalid flags in
-.IR type .
-.TP
-.B EMFILE
-The per-process limit on the number of open file descriptors has been reached.
-.TP
-.B ENFILE
-The system-wide limit on the total number of open files has been reached.
-.TP
-.BR ENOBUFS " or " ENOMEM
-Insufficient memory is available.
-The socket cannot be
-created until sufficient resources are freed.
-.TP
-.B EPROTONOSUPPORT
-The protocol type or the specified protocol is not
-supported within this domain.
-.P
-Other errors may be generated by the underlying protocol modules.
-.SH STANDARDS
-POSIX.1-2008.
-.P
-.B SOCK_NONBLOCK
-and
-.B SOCK_CLOEXEC
-are Linux-specific.
-.SH HISTORY
-POSIX.1-2001, 4.4BSD.
-.P
-.BR socket ()
-appeared in 4.2BSD.
-It is generally portable to/from
-non-BSD systems supporting clones of the BSD socket layer (including
-System\ V variants).
-.P
-The manifest constants used under 4.x BSD for protocol families
-are
-.BR PF_UNIX ,
-.BR PF_INET ,
-and so on, while
-.BR AF_UNIX ,
-.BR AF_INET ,
-and so on are used for address
-families.
-However, already the BSD man page promises: "The protocol
-family generally is the same as the address family", and subsequent
-standards use AF_* everywhere.
-.SH EXAMPLES
-An example of the use of
-.BR socket ()
-is shown in
-.BR getaddrinfo (3).
-.SH SEE ALSO
-.BR accept (2),
-.BR bind (2),
-.BR close (2),
-.BR connect (2),
-.BR fcntl (2),
-.BR getpeername (2),
-.BR getsockname (2),
-.BR getsockopt (2),
-.BR ioctl (2),
-.BR listen (2),
-.BR read (2),
-.BR recv (2),
-.BR select (2),
-.BR send (2),
-.BR shutdown (2),
-.BR socketpair (2),
-.BR write (2),
-.BR getprotoent (3),
-.BR address_families (7),
-.BR ip (7),
-.BR socket (7),
-.BR tcp (7),
-.BR udp (7),
-.BR unix (7)
-.P
-\[lq]An Introductory 4.3BSD Interprocess Communication Tutorial\[rq]
-and
-\[lq]BSD Interprocess Communication Tutorial\[rq],
-reprinted in
-.I UNIX Programmer's Supplementary Documents Volume 1.