socket man page on SmartOS

Man page or keyword search:  
man Server   16655 pages
apropos Keyword Search (all sections)
Output format
SmartOS logo
[printable version]


       socket - create an endpoint for communication

       cc [ flag ... ] file ... -lsocket  -lnsl	 [ library ... ]
       #include <sys/types.h>
       #include <sys/socket.h>

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

       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:

		   UNIX system internal protocols

		   Internet Protocol Version 4 (IPv4)

		   Internet Protocol Version 6 (IPv6)

		   Network Cache and Accelerator (NCA) protocols

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


       The type may be augmented by a bitwise-inclusive-OR of flags  from  the
       following list, defined in <sys/socket.h>.

		   Creates  the	 socket	 with the FD_CLOEXEC flag set, causing
		   the underlying file descriptor to be closed	prior  to  any
		   future  calls to exec(2). This is similar in purpose to the
		   O_CLOEXEC flag to open(2).

		   Creates the socket with the O_NDELAY flag set, causing  the
		   socket  to  provide	nonblocking semantics as described for
		   O_NDELAY in open(2).	 SOCK_NONBLOCK should normally be used
		   in  preference to SOCK_NDELAY, and takes precedence if both
		   are set.  See open(2) for further details.

		   Creates the socket with the O_NONBLOCK  flag	 set,  causing
		   the	socket	to  provide nonblocking semantics as described
		   for O_NONBLOCK in open(2).

       There must be an entry in the netconfig(4) 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(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 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(3SOCKET)  calls.  Datagrams	 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  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(3SOCKET) and
       getsockopt(3SOCKET) are used to set and get options, respectively.

       Upon  successful	 completion,  a	 descriptor  referencing the socket is
       returned.  Otherwise, -1 is returned and errno is set to	 indicate  the

       The socket() function will fail if:

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

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

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

			  The per-process descriptor table is full.

			  Insufficient user memory is available.

			  There were insufficient STREAMS resources  available
			  to complete the operation.

			  The specified protocol family is not supported.

			  The  protocol	 type  is not supported by the address

			  The socket type is not supported by the protocol.

			  One or more of the specified flags is not supported.

       See attributes(5) for descriptions of the following attributes:

       │MT-Level       │ Safe		 │

       nca(1),	  close(2),    fcntl(2),    ioctl(2),	 read(2),    write(2),
       accept(3SOCKET),	 bind(3SOCKET),	 exec(2),  connect(3SOCKET),  getsock‐
       name(3SOCKET),	 getsockopt(3SOCKET),	  in.h(3HEAD),listen(3SOCKET),
       recv(3SOCKET),	open(2),   setsockopt(3SOCKET),	 send(3SOCKET),	 shut‐
       down(3SOCKET), socket.h(3HEAD), socketpair(3SOCKET), attributes(5)

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

				 Jan 28, 2009		       SOCKET(3SOCKET)

List of man pages available for SmartOS

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
Vote for polarhome
Free Shell Accounts :: the biggest list on the net