|
NAMEsocket —
create an endpoint for communication
LIBRARYStandard C Library (libc, -lc)SYNOPSIS#include <sys/socket.h>
int
DESCRIPTIONThesocket () system call creates an endpoint for
communication and returns a descriptor.
The domain argument specifies a
communications domain within which communication will take place; this
selects the protocol family which should be used. These families are defined
in the include file
PF_LOCAL Host-internal protocols (alias for PF_UNIX), PF_UNIX Host-internal protocols, PF_INET Internet version 4 protocols, PF_INET6 Internet version 6 protocols, PF_ROUTE Internal routing protocol, PF_LINK Link layer interface, PF_KEY Internal key-management function, PF_NATM Asynchronous transfer mode protocols, PF_NETGRAPH Netgraph sockets, PF_IEEE80211 IEEE 802.11 wireless link-layer protocols (WiFi), PF_BLUETOOTH Bluetooth protocols, PF_INET_SDP OFED socket direct protocol (IPv4), PF_INET6_SDP OFED socket direct protocol (IPv6) Each protocol family is connected to an address family, which has
the same name except that the prefix is
“ The socket has the indicated type, which specifies the semantics of communication. Currently defined types are: SOCK_STREAM Stream socket, SOCK_DGRAM Datagram socket, SOCK_RAW Raw-protocol interface, SOCK_RDM Reliably-delivered packet, SOCK_SEQPACKET Sequenced packet stream A Additionally, the following flags are allowed in the type argument: SOCK_CLOEXEC Set close-on-exec on the new descriptor, SOCK_NONBLOCK Set non-blocking mode on the new socket The protocol argument 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. 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 particular to the “communication domain” in which communication is to take place; see protocols(5). The protocol argument may be set to zero (0) to request the default implementation of a socket type for the protocol, if any. Sockets of type The communications protocols used to implement a
An
fcntl(2)
system call can be used to specify a process group to receive a
The operation of sockets is controlled by socket level
options. These options are defined in the file
RETURN VALUESA -1 is returned if an error occurs, otherwise the return value is a descriptor referencing the socket.ERRORSThesocket () system call fails if:
SEE ALSOaccept(2), bind(2), connect(2), getpeername(2), getsockname(2), getsockopt(2), ioctl(2), listen(2), read(2), recv(2), select(2), send(2), shutdown(2), socketpair(2), write(2), CMSG_DATA(3), getprotoent(3), netgraph(4), protocols(5)An Introductory 4.3 BSD Interprocess Communication Tutorial, PS1, 7. BSD Interprocess Communication Tutorial, PS1, 8. STANDARDSThesocket () function conforms to IEEE
Std 1003.1-2008 (“POSIX.1”). The POSIX standard specifies
only the AF_INET , AF_INET6 ,
and AF_UNIX constants for address families, and
requires the use of AF_* constants for the
domain argument of socket (). The
SOCK_CLOEXEC flag is expected to conform to the next
revision of the POSIX standard. The SOCK_RDM
type, the PF_* constants, and
other address families are FreeBSD extensions.
HISTORYThesocket () system call appeared in
4.2BSD.
Visit the GSP FreeBSD Man Page Interface. |