 f14fb60209
			
		
	
	
		f14fb60209
		
	
	
	
	
		
			
			* Updating common/lib * Updating lib/csu * Updating lib/libc * Updating libexec/ld.elf_so * Corrected test on __minix in featuretest to actually follow the meaning of the comment. * Cleaned up _REENTRANT-related defintions. * Disabled -D_REENTRANT for libfetch * Removing some unneeded __NBSD_LIBC defines and tests Change-Id: Ic1394baef74d11b9f86b312f5ff4bbc3cbf72ce2
		
			
				
	
	
		
			296 lines
		
	
	
		
			8.1 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
			
		
		
	
	
			296 lines
		
	
	
		
			8.1 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
| .\"	$NetBSD: socket.2,v 1.39 2012/01/25 09:18:52 wiz Exp $
 | |
| .\"
 | |
| .\" Copyright (c) 1983, 1991, 1993
 | |
| .\"	The Regents of the University of California.  All rights reserved.
 | |
| .\"
 | |
| .\" Redistribution and use in source and binary forms, with or without
 | |
| .\" modification, are permitted provided that the following conditions
 | |
| .\" are met:
 | |
| .\" 1. Redistributions of source code must retain the above copyright
 | |
| .\"    notice, this list of conditions and the following disclaimer.
 | |
| .\" 2. Redistributions in binary form must reproduce the above copyright
 | |
| .\"    notice, this list of conditions and the following disclaimer in the
 | |
| .\"    documentation and/or other materials provided with the distribution.
 | |
| .\" 3. Neither the name of the University nor the names of its contributors
 | |
| .\"    may be used to endorse or promote products derived from this software
 | |
| .\"    without specific prior written permission.
 | |
| .\"
 | |
| .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 | |
| .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | |
| .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 | |
| .\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 | |
| .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 | |
| .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 | |
| .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 | |
| .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 | |
| .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 | |
| .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 | |
| .\" SUCH DAMAGE.
 | |
| .\"
 | |
| .\"     @(#)socket.2	8.1 (Berkeley) 6/4/93
 | |
| .\"
 | |
| .Dd January 23, 2012
 | |
| .Dt SOCKET 2
 | |
| .Os
 | |
| .Sh NAME
 | |
| .Nm socket
 | |
| .Nd create an endpoint for communication
 | |
| .Sh LIBRARY
 | |
| .Lb libc
 | |
| .Sh SYNOPSIS
 | |
| .In sys/socket.h
 | |
| .Ft int
 | |
| .Fn socket "int domain" "int type" "int protocol"
 | |
| .Sh DESCRIPTION
 | |
| .Fn socket
 | |
| creates an endpoint for communication and returns a descriptor.
 | |
| .Pp
 | |
| The
 | |
| .Fa domain
 | |
| parameter specifies a communications domain within which
 | |
| communication will take place; this selects the protocol family
 | |
| which should be used.
 | |
| These families are defined in the include file
 | |
| .Ao Pa sys/socket.h Ac .
 | |
| The currently understood formats are:
 | |
| .Pp
 | |
| .Bd -literal -offset indent -compact
 | |
| PF_LOCAL	local (previously UNIX) domain protocols
 | |
| PF_INET		ARPA Internet protocols
 | |
| PF_INET6	IPv6 (Internet Protocol version 6) protocols
 | |
| PF_ISO		ISO protocols
 | |
| PF_NS		Xerox Network Systems protocols
 | |
| PF_IMPLINK	IMP \*(lqhost at IMP\*(rq link layer
 | |
| PF_APPLETALK	AppleTalk protocols
 | |
| PF_BLUETOOTH	Bluetooth protocols
 | |
| .Ed
 | |
| .Pp
 | |
| The socket has the indicated
 | |
| .Fa type ,
 | |
| which specifies the semantics of communication.
 | |
| Currently defined types are:
 | |
| .Pp
 | |
| .Bd -literal -offset indent -compact
 | |
| SOCK_STREAM
 | |
| SOCK_DGRAM
 | |
| SOCK_RAW
 | |
| SOCK_SEQPACKET
 | |
| SOCK_RDM
 | |
| .Ed
 | |
| .Pp
 | |
| The following flags can be or'ed to the type to condition the returned
 | |
| file descriptor:
 | |
| The following flags are valid:
 | |
| .Bl -column SOCK_NONBLOCK -offset indent
 | |
| .It Dv SOCK_CLOEXEC
 | |
| Set the close on exec property.
 | |
| .It Dv SOCK_NONBLOCK
 | |
| Sets non-blocking I/O.
 | |
| .It Dv SOCK_NOSIGPIPE
 | |
| Return
 | |
| .Er EPIPE
 | |
| instead of raising
 | |
| .Dv SIGPIPE .
 | |
| .El
 | |
| .Pp
 | |
| A
 | |
| .Dv SOCK_STREAM
 | |
| type provides sequenced, reliable,
 | |
| two-way connection based byte streams.
 | |
| An out-of-band data transmission mechanism may be supported.
 | |
| A
 | |
| .Dv SOCK_DGRAM
 | |
| socket supports
 | |
| datagrams (connectionless, unreliable messages of
 | |
| a fixed (typically small) maximum length).
 | |
| A
 | |
| .Dv 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
 | |
| .Dv PF_NS .
 | |
| .Dv SOCK_RAW
 | |
| sockets provide access to internal network protocols and interfaces.
 | |
| The types
 | |
| .Dv SOCK_RAW ,
 | |
| which is available only to the super-user, and
 | |
| .Dv SOCK_RDM ,
 | |
| which is planned,
 | |
| but not yet implemented, are not described here.
 | |
| .Pp
 | |
| The
 | |
| .Fa 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 \*(lqcommunication domain\*(rq in which communication
 | |
| is to take place; see
 | |
| .Xr protocols 5 .
 | |
| .Pp
 | |
| Sockets of type
 | |
| .Dv SOCK_STREAM
 | |
| are full-duplex byte streams.
 | |
| A stream socket must be in a
 | |
| .Em connected
 | |
| state before any data may be sent or received
 | |
| on it.
 | |
| A connection to another socket is created with a
 | |
| .Xr connect 2
 | |
| call.
 | |
| Once connected, data may be transferred using
 | |
| .Xr read 2
 | |
| and
 | |
| .Xr write 2
 | |
| calls or some variant of the
 | |
| .Xr send 2
 | |
| and
 | |
| .Xr recv 2
 | |
| calls.
 | |
| When a session has been completed a
 | |
| .Xr close 2
 | |
| may be performed.
 | |
| Out-of-band data may also be transmitted as described in
 | |
| .Xr send 2
 | |
| and received as described in
 | |
| .Xr recv 2 .
 | |
| .Pp
 | |
| The communications protocols used to implement a
 | |
| .Dv 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
 | |
| .Er ETIMEDOUT
 | |
| as the specific code
 | |
| in the global variable
 | |
| .Va errno .
 | |
| The protocols optionally keep sockets
 | |
| .Dq 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 an extended period (e.g., 5 minutes).
 | |
| A
 | |
| .Dv SIGPIPE
 | |
| signal is raised if a process sends
 | |
| on a broken stream; this causes naive processes,
 | |
| which do not handle the signal, to exit.
 | |
| .Pp
 | |
| .Dv SOCK_SEQPACKET
 | |
| sockets employ the same system calls
 | |
| as
 | |
| .Dv SOCK_STREAM
 | |
| sockets.
 | |
| The only difference is that
 | |
| .Xr read 2
 | |
| calls will return only the amount of data requested,
 | |
| and any remaining in the arriving packet will be discarded.
 | |
| .Pp
 | |
| .Dv SOCK_DGRAM
 | |
| and
 | |
| .Dv SOCK_RAW
 | |
| sockets allow sending of datagrams to correspondents
 | |
| named in
 | |
| .Xr send 2
 | |
| calls.
 | |
| Datagrams are generally received with
 | |
| .Xr recvfrom 2 ,
 | |
| which returns the next datagram with its return address.
 | |
| .Pp
 | |
| An
 | |
| .Xr fcntl 2
 | |
| call can be used to specify a process group to receive
 | |
| a
 | |
| .Dv 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
 | |
| .Dv SIGIO .
 | |
| .Pp
 | |
| The operation of sockets is controlled by socket level
 | |
| .Em options .
 | |
| These options are defined in the file
 | |
| .Ao Pa sys/socket.h Ac .
 | |
| The
 | |
| .Xr setsockopt 2
 | |
| and
 | |
| .Xr getsockopt 2
 | |
| system calls are used to set and get options, respectively.
 | |
| .Sh RETURN VALUES
 | |
| A \-1 is returned if an error occurs, otherwise the return
 | |
| value is a descriptor referencing the socket.
 | |
| .Sh ERRORS
 | |
| The
 | |
| .Fn socket
 | |
| call fails if:
 | |
| .Bl -tag -width Er
 | |
| .It Bq Er EACCES
 | |
| Permission to create a socket of the specified type and/or protocol
 | |
| is denied.
 | |
| .It Bq Er EAFNOSUPPORT
 | |
| The address family (domain) is not supported or
 | |
| the specified domain is not supported by this protocol family.
 | |
| .It Bq Er EMFILE
 | |
| The per-process descriptor table is full.
 | |
| .It Bq Er ENFILE
 | |
| The system file table is full.
 | |
| .It Bq Er ENOBUFS
 | |
| Insufficient buffer space is available.
 | |
| The socket cannot be created until sufficient resources are freed.
 | |
| .It Bq Er EPROTONOSUPPORT
 | |
| The protocol family is not supported or
 | |
| the specified protocol is not supported within this domain.
 | |
| .It Bq Er EPROTOTYPE
 | |
| The socket type is not supported by the protocol.
 | |
| .El
 | |
| .Sh SEE ALSO
 | |
| .Xr accept 2 ,
 | |
| .Xr bind 2 ,
 | |
| .Xr connect 2 ,
 | |
| .Xr getsockname 2 ,
 | |
| .Xr getsockopt 2 ,
 | |
| .Xr ioctl 2 ,
 | |
| .Xr listen 2 ,
 | |
| .Xr poll 2 ,
 | |
| .Xr read 2 ,
 | |
| .Xr recv 2 ,
 | |
| .Xr select 2 ,
 | |
| .Xr send 2 ,
 | |
| .Xr setsockopt 2 ,
 | |
| .Xr shutdown 2 ,
 | |
| .Xr socketpair 2 ,
 | |
| .Xr write 2 ,
 | |
| .Xr getprotoent 3
 | |
| .Rs
 | |
| .%T "An Introductory 4.4BSD Interprocess Communication Tutorial"
 | |
| .%A Stuart Sechrest
 | |
| .Re
 | |
| .Pq see Pa /usr/share/doc/psd/20.ipctut
 | |
| .Rs
 | |
| .%T "Advanced 4.4BSD IPC Tutorial"
 | |
| .%A Samuel J. Leffler
 | |
| .%A Robert S. Fabry
 | |
| .%A William N. Joy
 | |
| .%A Phil Lapsley
 | |
| .%A Steve Miller
 | |
| .%A Chris Torek
 | |
| .Re
 | |
| .Pq see Pa /usr/share/doc/psd/21.ipc
 | |
| .Sh HISTORY
 | |
| The
 | |
| .Fn socket
 | |
| function call appeared in
 | |
| .Bx 4.2 .
 |