socket(3c) 맨 페이지 - 윈디하나의 솔라나라

개요

섹션
맨 페이지 이름
검색(S)

socket(3c)

socket(3C)               Standard C Library Functions               socket(3C)

NAME
       socket - create an endpoint for communication

SYNOPSIS
       #include <sys/socket.h>

       int socket(int domain, int type, int protocol);

DESCRIPTION
       The socket() function creates an endpoint for communication and returns
       a descriptor.


       The domain argument specifies the protocol family within which communi‐
       cation  takes  place.  The protocol family is generally the same as the
       address family for the addresses supplied in later  operations  on  the
       socket. These families are defined in <sys/socket.h>.


       The currently supported protocol families are:

       PF_UNIX     UNIX system internal protocols


       PF_INET     Internet Protocol Version 4 (IPv4)


       PF_INET6    Internet Protocol Version 6 (IPv6)



       The  socket  has  the indicated type, which specifies the communication
       semantics. Currently defined types are:

         SOCK_STREAM
         SOCK_DGRAM
         SOCK_SEQPACKET
         SOCK_RAW
         SOCK_RDM



       There must be an entry in the netconfig(5) file for at least each  pro‐
       tocol  family and type required. If a non-zero protocol has been speci‐
       fied but no exact match for the protocol family, type, and protocol  is
       found,  then  the  first entry containing the specified family and type
       with a protocol value of zero will be used.


       A SOCK_STREAM type provides sequenced,  reliable,  two-way  connection-
       based  byte  streams. An out-of-band data transmission mechanism may be
       supported. A SOCK_DGRAM socket supports datagrams (connectionless,  un‐
       reliable  messages  of  a  fixed  (typically  small) maximum length). A
       SOCK_SEQPACKET socket may provide a sequenced, reliable,  two-way  con‐
       nection-based  data  transmission  path  for datagrams of fixed maximum
       length; a consumer may be required to read an entire packet  with  each
       read system call. This facility is protocol specific, and presently not
       implemented for any protocol family. SOCK_RAW sockets provide access to
       internal  network  interfaces.  The  types SOCK_RAW, which is available
       only to a user with the  net_rawaccess  privilege,  and  SOCK_RDM,  for
       which no implementation currently exists, are not described here.


       The protocol parameter is a protocol-family-specific value which speci‐
       fies  a  particular  protocol to be used with the socket. Normally this
       value is zero, as commonly only a single protocol exists to  support  a
       particular  socket type within a given protocol family. However, multi‐
       ple protocols may exist, in which case a  particular  protocol  may  be
       specified in this manner.


       Sockets  of  type  SOCK_STREAM are full-duplex byte streams, similar to
       pipes. A stream socket must be in a connected state before any data may
       be sent or received on it. A connection to another  socket  is  created
       with  a connect(3C) call. Once connected, data may be transferred using
       read(2) and write(2) calls or some variant of the send(3C) and recv(3C)
       calls. When a session has been completed, a close(2) may be  performed.
       Out-of-band  data  may also be transmitted as described on the send(3C)
       manual page and received as described on the recv(3C) manual page.


       The communications protocols used to  implement  a  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
       broken and calls will indicate  an  error  with  −1  returns  and  with
       ETIMEDOUT as the specific code in the global variable errno. The proto‐
       cols  optionally  keep  sockets "warm" by forcing transmissions roughly
       every minute in the absence of other activity. An error is  then  indi‐
       cated  if  no  response can be elicited on an otherwise idle connection
       for a extended period (for instance 5 minutes).  A  SIGPIPE  signal  is
       raised  if  a  thread  sends  on  a  broken  stream;  this causes naive
       processes, which do not handle the signal, to exit.


       SOCK_SEQPACKET sockets employ the  same  system  calls  as  SOCK_STREAM
       sockets. The only difference is that read(2) calls will return only the
       amount of data requested, and any remaining in the arriving packet will
       be discarded.


       SOCK_DGRAM  and  SOCK_RAW  sockets allow datagrams to be sent to corre‐
       spondents named in sendto(3C) calls. Datagrams are  generally  received
       with  recvfrom(3C), which returns the next datagram with its return ad‐
       dress.


       An fcntl(2) call can be used to specify a process group  to  receive  a
       SIGURG  signal  when  the  out-of-band data arrives. It can also enable
       non-blocking I/O.


       The operation of sockets is controlled by socket level  options.  These
       options are defined in the file <sys/socket.h>. setsockopt(3C) and get‐
       sockopt(3C) are used to set and get options, respectively.


       Some  file descriptor flags can be specified at socket creation time to
       avoid race conditions. These options are passed by using a  bitwise-in‐
       clusive-OR  of values from the following list with the value passed for
       the type parameter to the socket(). See the open(2) man  page  for  de‐
       tails on what each flag does.

       SOCK_CLOEXEC      If  set,  the  O_CLOEXEC flag is set for the new file
                         descriptor.


       SOCK_CLOFORK      If set, the O_CLOFORK flag is set for  the  new  file
                         descriptor.


       SOCK_NONBLOCK     If  set,  the O_NONBLOCK flag is set for the new file
                         descriptor.


       SOCK_NDELAY       If set, the O_NDELAY flag is set for the new file de‐
                         scriptor.


       SOCK_NOSIGPIPE    If set, the O_NOSIGPIPE flag is set for the new  file
                         descriptor.


RETURN VALUES
       Upon  successful completion, a descriptor referencing the socket is re‐
       turned. Otherwise, -1 is returned and errno is set to indicate the  er‐
       ror.

ERRORS
       The socket() function will fail if:

       EACCES             Permission  to create a socket of the specified type
                          or protocol is denied.


       EAGAIN             There were insufficient resources available to  com‐
                          plete the operation.


       EAFNOSUPPORT       The specified address family is not supported by the
                          protocol family.


       EMFILE             The per-process descriptor table is full.


       ENOMEM             Insufficient user memory is available.


       ENOSR              There  were insufficient STREAMS resources available
                          to complete the operation.


       EPFNOSUPPORT       The specified protocol family is not supported.


       EPROTONOSUPPORT    The protocol type is not supported  by  the  address
                          family.


       EPROTOTYPE         The socket type is not supported by the protocol.


ATTRIBUTES
       See attributes(7) for descriptions of the following attributes:

       tab()  box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) ATTRIBUTE TYPEAT‐
       TRIBUTE VALUE _ Interface  StabilityCommitted  _  MT-LevelAsync-Signal-
       Safe _ StandardSee standards(7).


SEE ALSO
       close(2),  fcntl(2), ioctl(2), read(2), write(2), accept(3C), bind(3C),
       connect(3C),  getsockname(3C),  getsockopt(3C),  listen(3C),  recv(3C),
       recvmmsg(3C), send(3C), sendfile(3C), sendfilev(3C), sendmmsg(3C), set‐
       sockopt(3C), shutdown(3C), sockatmark(3C), socketpair(3C), in.h(3HEAD),
       socket.h(3HEAD), attributes(7)

NOTES
       Historically,  AF_*  was  commonly used in places where PF_* was meant.
       New code should be careful to use PF_* as necessary.

HISTORY
       The socket() function has been present since the initial release of So‐
       laris.


       Support for PF_UNIX and PF_INET  protocol  families  has  been  present
       since the initial release of Solaris. Support for PF_INET6 was added in
       Solaris 8.


       Support  for PF_NCA sockets was added in Solaris 8 7/01 (Update 5), and
       removed in Oracle Solaris 11.4.


       Support for SOCK_* flags as part of the type parameter was added to Or‐
       acle Solaris in the 11.4 release.

Oracle Solaris 11.4               2 Feb 2021                        socket(3C)
맨 페이지 내용의 저작권은 맨 페이지 작성자에게 있습니다.
RSS ATOM XHTML 5 CSS3