mirror of https://github.com/mkerrisk/man-pages
151 lines
4.9 KiB
Plaintext
151 lines
4.9 KiB
Plaintext
.\" Copyright (c) 2001-2003 The Open Group, All Rights Reserved
|
|
.TH "SOCKET" P 2003 "IEEE/The Open Group" "POSIX Programmer's Manual"
|
|
.\" socket
|
|
.SH NAME
|
|
socket \- create an endpoint for communication
|
|
.SH SYNOPSIS
|
|
.LP
|
|
\fB#include <sys/socket.h>
|
|
.br
|
|
.sp
|
|
int socket(int\fP \fIdomain\fP\fB, int\fP \fItype\fP\fB, int\fP \fIprotocol\fP\fB);
|
|
.br
|
|
\fP
|
|
.SH DESCRIPTION
|
|
.LP
|
|
The \fIsocket\fP() function shall create an unbound socket in a communications
|
|
domain, and return a file descriptor that can be
|
|
used in later function calls that operate on sockets.
|
|
.LP
|
|
The \fIsocket\fP() function takes the following arguments:
|
|
.TP 7
|
|
\fIdomain\fP
|
|
Specifies the communications domain in which a socket is to be created.
|
|
.TP 7
|
|
\fItype\fP
|
|
Specifies the type of socket to be created.
|
|
.TP 7
|
|
\fIprotocol\fP
|
|
Specifies a particular protocol to be used with the socket. Specifying
|
|
a \fIprotocol\fP of 0 causes \fIsocket\fP() to use an
|
|
unspecified default protocol appropriate for the requested socket
|
|
type.
|
|
.sp
|
|
.LP
|
|
The \fIdomain\fP argument specifies the address family used in the
|
|
communications domain. The address families supported by the
|
|
system are implementation-defined.
|
|
.LP
|
|
Symbolic constants that can be used for the domain argument are defined
|
|
in the \fI<sys/socket.h>\fP header.
|
|
.LP
|
|
The \fItype\fP argument specifies the socket type, which determines
|
|
the semantics of communication over the socket. The
|
|
following socket types are defined; implementations may specify additional
|
|
socket types:
|
|
.TP 7
|
|
SOCK_STREAM
|
|
Provides sequenced, reliable, bidirectional, connection-mode byte
|
|
streams, and may provide a transmission mechanism for
|
|
out-of-band data.
|
|
.TP 7
|
|
SOCK_DGRAM
|
|
Provides datagrams, which are connectionless-mode, unreliable messages
|
|
of fixed maximum length.
|
|
.TP 7
|
|
SOCK_SEQPACKET
|
|
Provides sequenced, reliable, bidirectional, connection-mode transmission
|
|
paths for records. A record can be sent using one or
|
|
more output operations and received using one or more input operations,
|
|
but a single operation never transfers part of more than
|
|
one record. Record boundaries are visible to the receiver via the
|
|
MSG_EOR flag.
|
|
.sp
|
|
.LP
|
|
If the \fIprotocol\fP argument is non-zero, it shall specify a protocol
|
|
that is supported by the address family. If the
|
|
\fIprotocol\fP argument is zero, the default protocol for this address
|
|
family and type shall be used. The protocols supported by
|
|
the system are implementation-defined.
|
|
.LP
|
|
The process may need to have appropriate privileges to use the \fIsocket\fP()
|
|
function or to create some sockets.
|
|
.SH RETURN VALUE
|
|
.LP
|
|
Upon successful completion, \fIsocket\fP() shall return a non-negative
|
|
integer, the socket file descriptor. Otherwise, a value
|
|
of -1 shall be returned and \fIerrno\fP set to indicate the error.
|
|
.SH ERRORS
|
|
.LP
|
|
The \fIsocket\fP() function shall fail if:
|
|
.TP 7
|
|
.B EAFNOSUPPORT
|
|
.sp
|
|
The implementation does not support the specified address family.
|
|
.TP 7
|
|
.B EMFILE
|
|
No more file descriptors are available for this process.
|
|
.TP 7
|
|
.B ENFILE
|
|
No more file descriptors are available for the system.
|
|
.TP 7
|
|
.B EPROTONOSUPPORT
|
|
.sp
|
|
The protocol is not supported by the address family, or the protocol
|
|
is not supported by the implementation.
|
|
.TP 7
|
|
.B EPROTOTYPE
|
|
The socket type is not supported by the protocol.
|
|
.sp
|
|
.LP
|
|
The \fIsocket\fP() function may fail if:
|
|
.TP 7
|
|
.B EACCES
|
|
The process does not have appropriate privileges.
|
|
.TP 7
|
|
.B ENOBUFS
|
|
Insufficient resources were available in the system to perform the
|
|
operation.
|
|
.TP 7
|
|
.B ENOMEM
|
|
Insufficient memory was available to fulfill the request.
|
|
.sp
|
|
.LP
|
|
\fIThe following sections are informative.\fP
|
|
.SH EXAMPLES
|
|
.LP
|
|
None.
|
|
.SH APPLICATION USAGE
|
|
.LP
|
|
The documentation for specific address families specifies which protocols
|
|
each address family supports. The documentation for
|
|
specific protocols specifies which socket types each protocol supports.
|
|
.LP
|
|
The application can determine whether an address family is supported
|
|
by trying to create a socket with \fIdomain\fP set to the
|
|
protocol in question.
|
|
.SH RATIONALE
|
|
.LP
|
|
None.
|
|
.SH FUTURE DIRECTIONS
|
|
.LP
|
|
None.
|
|
.SH SEE ALSO
|
|
.LP
|
|
\fIaccept\fP() , \fIbind\fP() , \fIconnect\fP()
|
|
, \fIgetsockname\fP() , \fIgetsockopt\fP() , \fIlisten\fP() , \fIrecv\fP()
|
|
, \fIrecvfrom\fP() , \fIrecvmsg\fP() , \fIsend\fP() , \fIsendmsg\fP()
|
|
, \fIsetsockopt\fP() , \fIshutdown\fP() , \fIsocketpair\fP() , the
|
|
Base Definitions volume of IEEE\ Std\ 1003.1-2001, \fI<netinet/in.h>\fP,
|
|
\fI<sys/socket.h>\fP
|
|
.SH COPYRIGHT
|
|
Portions of this text are reprinted and reproduced in electronic form
|
|
from IEEE Std 1003.1, 2003 Edition, Standard for Information Technology
|
|
-- Portable Operating System Interface (POSIX), The Open Group Base
|
|
Specifications Issue 6, Copyright (C) 2001-2003 by the Institute of
|
|
Electrical and Electronics Engineers, Inc and The Open Group. In the
|
|
event of any discrepancy between this version and the original IEEE and
|
|
The Open Group Standard, the original IEEE and The Open Group Standard
|
|
is the referee document. The original Standard can be obtained online at
|
|
http://www.opengroup.org/unix/online.html .
|