*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->IRIX man pages -> standard/socket (2)              



SOCKET(2)							     SOCKET(2)

NAME    [Toc]    [Back]

     socket - create an	endpoint for communication

C SYNOPSIS    [Toc]    [Back]

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

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

DESCRIPTION    [Toc]    [Back]

     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_INET     (DARPA Internet protocols)
	  PF_RAW      (Link-level protocols)
	  PF_UNIX     (4.3BSD UNIX internal protocols)
     The formats PF_NS (Xerox Network Systems protocols) and PF_IMPLINK	(IMP
     link layer) are not implemented.

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


     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).
     SOCK_RAW sockets, which are available only	to the super-user, provide
     access to internal	network	protocols and interfaces.  The types
     SOCK_SEQPACKET and	SOCK_RDM are currently unimplemented.

     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

     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

									Page 1

SOCKET(2)							     SOCKET(2)

 and recv(2)
     calls. Note that for the read and recv-style calls, the number of bytes
     actually read may be less than the	number requested.  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

     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

     An	fcntl(2) call can be used to specify a process group to	receive	a
     SIGURG signal when	the out-of-band	data arrives.  The FIONBIO i/o control
     (see ioctl(2)) or the FNDELAY fcntl (see fcntl(2))	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    [Toc]    [Back]

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

ERRORS    [Toc]    [Back]

     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.

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

									Page 2

SOCKET(2)							     SOCKET(2)

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

SEE ALSO    [Toc]    [Back]

     accept(2),	bind(2), connect(2), fcntl(2), getsockname(2), getsockopt(2),
     ioctl(2), listen(2), read(2), recv(2), select(2), send(2),	socketpair(2),
     write(2), inet(7F), raw(7F), unix(7F)

NOTE    [Toc]    [Back]

     ABI-compliant versions of the above calls can be obtained from

									PPPPaaaaggggeeee 3333
[ Back ]
 Similar pages
Name OS Title
ttdt_open HP-UX create a ToolTalk communication endpoint
ttdt_close HP-UX destroy a ToolTalk communication endpoint
pipe OpenBSD create descriptor pair for interprocess communication
socket Tru64 Create an end point for communication and return a descriptor
pipe NetBSD create descriptor pair for interprocess communication
pipe FreeBSD create descriptor pair for interprocess communication
dcecp_endpoint HP-UX A dcecp object that manages endpoint information in local RPC endpoint maps
t6get_endpt_mask IRIX get or set endpoint security attribute mask, get or set endpoint default security attributes
t_close IRIX close a transport endpoint
t_close Tru64 Close a transport endpoint.
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service