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

개요

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

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,
       unreliable  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 pro‐
       cesses, 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
       address.


       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-
       inclusive-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
       details 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
                         descriptor.


       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
       returned. Otherwise, -1 is returned and errno is set  to  indicate  the
       error.

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
       Solaris.


       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
       Oracle Solaris in the 11.4 release.



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