socket() system call
socket(2) socket(2)
NAME
socket - Creates an end point for communication and returns a descriptor
SYNOPSIS
#include <sys/types.h>
#include <sys/socket.h>
int socket (
int addr_family,
int type,
int protocol );
PARAMETERS
addr_family
Specifies an address family with which addresses specified in
later socket operations should be interpreted. The sys/socket.h
file contains the definitions of the address families. Commonly
used families are:
AF_UNIX UNIX pathnames
AF_INET ARPA Internet addresses
AF_NS Xerox Network Software addresses
type Specifies the semantics of communication. The sys/socket.h file
defines the socket types. The following types are supported:
SOCK_STREAM
Provides sequenced, reliable, two-way byte streams with
a transmission mechanism for out-of-band data.
SOCK_DGRAM
Provides datagrams, which are connectionless messages
of a fixed maximum length.
SOCK_RAW Provides access to internal network protocols and
interfaces. This type of socket is available only to a
process with superuser privilege.
protocol Specifies a particular protocol to be used with the socket.
Specifying a protocol of 0 (zero) causes the socket() function to
default to the typical protocol for the requested type of
returned socket.
DESCRIPTION
The socket() function creates a socket of the specified type in the speci-
fied addr_family.
The socket() function returns a descriptor (an integer) that can be used in
later system calls that operate on sockets.
Socket level options control socket operations. The getsockopt() and set-
sockopt() functions are used to get and set these options, which are
defined in the sys/socket.h file.
RETURN VALUES
Upon successful completion, the socket() function returns a nonnegative
integer (the socket descriptor). Otherwise, a value of -1 is returned and
errno is set to indicate the error.
ERRORS
If the socket() function fails, errno may be set to one of the following
values:
[EAFNOSUPPORT]
The addresses in the specified address family are not available
in the kernel.
[EPROTONOSUPPORT]
The socket in the specified address family is not supported.
[EMFILE] The per-process descriptor table is full.
[ENOBUFS] Insufficient resources were available in the system to complete
the call.
[ENOMEM] The system was unable to allocate kernel memory to increase the
process descriptor table.
[EPERM] The process is attempting to open a raw socket and does not have
superuser privilege.
RELATED INFORMATION
Functions: accept(2), bind(2), connect(2), listen(2), getsockname(2), get-
sockopt(2), recv(2), recvfrom(2), recvmsg(2), send(2), sendto(2),
sendmsg(2), setsockopt(2), shutdown(2), socketpair(2) delim off