Sockets Library Functions                         socket(3SOCKET)

 

 

 

NAME

     socket - create an endpoint for communication

 

SYNOPSIS

     cc [ flag ... ] file ... -lsocket -lnsl [ library ... ]

     #include <sys/types.h>

     #include <sys/socket.h>

 

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

 

DESCRIPTION

     socket() creates an endpoint for communication and returns a

     descriptor.

 

     The  domain  parameter  specifies  a  communications  domain

     within which communication will take place; this selects the

     protocol family which should be used.  The protocol family

     generally  is  the  same  as  the  address  family  for  the

     addresses supplied in later operations on the socket.  These

     families  are  defined  in  the include file <sys/socket.h>.

     There must be an entry in the netconfig(4) file for at least

     each  protocol  family  and  type required. If  protocol has

     been specified, but no exact match for  the  tuplet  family,

     type, protocol is found, then the first entry containing the

     specified family and type with zero  for  protocol  will  be

     used. The currently understood formats 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  com-

     munication semantics. Currently defined types are:

 

     SOCK_STREAM

     SOCK_DGRAM

     SOCK_RAW

     SOCK_SEQPACKET

     SOCK_RDM

 

     A SOCK_STREAM type  provides  sequenced,  reliable,  two-way

     connection-based byte streams. An out-of-band data transmis-

     sion mechanism may be supported. A  SOCK_DGRAM  socket  sup-

     ports  datagrams  (connectionless,  unreliable messages of a

     fixed (typically small) maximum  length).  A  SOCK_SEQPACKET

     socket   may   provide   a   sequenced,   reliable,  two-way

     connection-based data transmission  path  for  datagrams  of

 

 

 

SunOS 5.8            Last change: 8 Nov 1999                    1

 

 

 

 

 

 

Sockets Library Functions                         socket(3SOCKET)

 

 

 

     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 the superuser, and SOCK_RDM, for which no  implemen-

     tation currently exists, are not described here.

 

     protocol 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.  How-

     ever, multiple protocols may exist, in which case a particu-

     lar 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.  If  a  protocol  is

     specified  by  the  caller,  then it will be packaged into a

     socket level option request and sent to the underlying  pro-

     tocol layers.

 

     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  con-

     nection to another socket is created with a connect(3SOCKET)

     call. Once connected, data may be transferred using  read(2)

     and  write(2) calls or some variant of the send(3SOCKET) and

     recv(3SOCKET) 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(3SOCKET)  manual  page

     and received as described on the recv(3SOCKET) manual page.

 

     The communications protocols used to implement a SOCK_STREAM

     insure  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  protocols

     optionally  keep  sockets  "warm"  by  forcing transmissions

     roughly every minute in the absence of other  activity.   An

     error is then indicated 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 pro-

     cess 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  correspondents named in sendto(3SOCKET) calls. Datagrams

 

 

 

SunOS 5.8            Last change: 8 Nov 1999                    2

 

 

 

 

 

 

Sockets Library Functions                         socket(3SOCKET)

 

 

 

     are generally received with recvfrom(3SOCKET), 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 may also enable non-blocking I/O and asynchronous notifi-

     cation of I/O events with SIGIO signals.

.   These   options   are   defined   in   the   file

     <sys/ssocket.h>.

     The operation of  sockets  is  controlled  by  socket  level

     options.  setsockopt(3SOCKET) and  getsockopt(3SOCKET)

     are used to set and get options, respectively.

 

RETURN VALUES

     A -1 is returned if an error occurs.  Otherwise  the  return

     value is a descriptor referencing the socket.

 

ERRORS

     The socket() call fails if:

 

     EACCES

           Permission to create a socket of  the  specified  type

           and/or protocol is denied.

 

     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.

 

     EPROTONOSUPPORT

           The protocol type or the  specified  protocol  is  not

           supported within this domain.

 

ATTRIBUTES

     See attributes(5) for descriptions of the  following  attri-

     butes:

 

     ____________________________________________________________

    |       ATTRIBUTE TYPE        |       ATTRIBUTE VALUE       |

    |______________________________|______________________________|

    | MT-Level                    | Safe                        |

    |______________________________|______________________________|

 

 

SEE ALSO

     close(2),    fcntl(2),    ioctl(2),    read(2),    write(2),

     accept(3SOCKET),       bind(3SOCKET),      connect(3SOCKET),

     getsockname(3SOCKET), getsockopt(3SOCKET),  listen(3SOCKET),

 

 

 

SunOS 5.8            Last change: 8 Nov 1999                    3

 

 

 

 

 

 

Sockets Library Functions                         socket(3SOCKET)

 

 

 

     recv(3SOCKET),      setsockopt(3SOCKET),      send(3SOCKET),

     shutdown(3SOCKET),    socketpair(3SOCKET),    attributes(5),

     in(3HEAD), socket(3HEAD)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SunOS 5.8            Last change: 8 Nov 1999                    4