socket man page on OPENSTEP

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


SOCKET(2)							     SOCKET(2)

NAME
       socket - create an endpoint for communication

SYNOPSIS
       #include <sys/types.h>
       #include <sys/socket.h>

       s = socket(domain, type, protocol)
       int s, domain, type, 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>.
       The currently understood formats are

	      PF_UNIX	  (UNIX internal protocols),
	      PF_INET	  (ARPA Internet protocols),
	      PF_NS	  (Xerox Network Systems protocols), and
	      PF_IMPLINK  (IMP “host at IMP” link layer).

       The socket has the indicated type, which	 specifies  the	 semantics  of
       communication.  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 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
       connection-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
       implemented  only  for  PF_NS.	SOCK_RAW  sockets  provide  access  to
       internal network protocols and interfaces.  The types  SOCK_RAW,	 which
       is  available  only  to the super-user, and SOCK_RDM, which is planned,
       but not yet implemented, are not described here.

       The 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.  However,  it  is  possible
       that many protocols may exist, in which case a particular 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;
       see protocols(3N).

       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(2)  call.   Once  connected,	 data  may  be
       transferred using read(2) and write(2) calls or	some  variant  of  the
       send(2)	and  recv(2)  calls.   When  a	session	 has  been completed a
       close(2) may be performed.  Out-of-band data may also be transmitted as
       described in send(2) and received as described in recv(2).

       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 (e.g. 5 minutes).  A SIGPIPE signal is
       raised  if  a  process  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  sending  of	 datagrams  to
       correspondents  named  in  send(2)  calls.   Datagrams  are   generally
       received	 with  recvfrom(2),  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 notification of I/O events via SIGIO.

       The operation of sockets is controlled by socket level options.	 These
       options	are  defined  in  the  file <sys/socket.h>.  Setsockopt(2) and
       getsockopt(2) are used to set and get options, respectively.

RETURN VALUE
       A -1 is returned if an error occurs, otherwise the return  value	 is  a
       descriptor referencing the socket.

ERRORS
       The socket call fails if:

       [EPROTONOSUPPORT]   The	protocol type or the specified protocol is not
			   supported within this domain.

       [EMFILE]		   The per-process descriptor table is full.

       [ENFILE]		   The system file table is full.

       [EACCESS]	   Permission to create a socket of the specified type
			   and/or protocol is denied.

       [ENOBUFS]	   Insufficient buffer space is available.  The socket
			   cannot be created until  sufficient	resources  are
			   freed.

SEE ALSO
       accept(2),    bind(2),	connect(2),   getsockname(2),	getsockopt(2),
       ioctl(2), listen(2), read(2), recv(2), select(2), send(2), shutdown(2),
       socketpair(2), write(2)
       ``An   Introductory   4.3BSD   Interprocess  Communication  Tutorial.''
       (reprinted in  UNIX  Programmer's  Supplementary	 Documents  Volume  1,
       PS1:7)  ``An  Advanced  4.3BSD  Interprocess  Communication Tutorial.''
       (reprinted in  UNIX  Programmer's  Supplementary	 Documents  Volume  1,
       PS1:8)

4.2 Berkeley Distribution	 May 23, 1986			     SOCKET(2)
[top]
                             _         _         _ 
                            | |       | |       | |     
                            | |       | |       | |     
                         __ | | __ __ | | __ __ | | __  
                         \ \| |/ / \ \| |/ / \ \| |/ /  
                          \ \ / /   \ \ / /   \ \ / /   
                           \   /     \   /     \   /    
                            \_/       \_/       \_/ 
More information is available in HTML format for server OPENSTEP

List of man pages available for OPENSTEP

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]
Tweet
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