Mercurial > ecos
diff packages/net/tcpip/current/doc/socket.man @ 97:ced4577552cd ecos-sw-2000-06-06
Merge from eCos master repository on 2000-06-06-08:44:00-BST
| author | jlarmour |
|---|---|
| date | Tue, 06 Jun 2000 08:39:36 +0000 |
| parents | |
| children |
line wrap: on
line diff
new file mode 100644 --- /dev/null +++ b/packages/net/tcpip/current/doc/socket.man @@ -0,0 +1,111 @@ +NAME + socket - create an endpoint for communication + +SYNOPSIS + #include <network.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. These families + are defined in <sys/socket.h>. The currently understood + formats include: + + PF_INET + IPv4 Internet protocols; see ip(4) + + The socket has the indicated type, which specifies the + semantics of communication. Currently defined types are: + + SOCK_STREAM + Provides sequenced, reliable, two-way connection- + based byte streams. An out-of-band data transmis- + sion mechanism may be supported. + + SOCK_DGRAM + Supports datagrams (connectionless, unreliable mes- + sages of a fixed maximum length). + + SOCK_SEQPACKET + Provides a sequenced, reliable, two-way connection- + based data transmission path for datagrams of fixed + maximum length; a consumer is required to read an + entire packet with each read system call. + + SOCK_RAW + Provides raw network protocol access. + + 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 proto- + col 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 communi- + cation is to take place; see protocols(5). See getpro- + toent(3) on how to map protocol name strings to protocol + numbers. + + 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 which implement a 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 When SO_KEEPALIVE + is enabled on the socket the protocol checks in a proto- + col-specific manner if the other end is still alive. + + 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. + + When the network signals an error condition to the proto- + col module (e.g. using a ICMP message for IP) the pending + error flag is set for the socket. The next operation on + this socket will return the error code of the pending + error. For some protocols it is possible to enable a per- + socket error queue to retrieve detailed information about + the error; see IP_RECVERR in ip(4). + + The operation of sockets is controlled by socket level + options. These options are defined in <sys/socket.h>. + Setsockopt(2) and getsockopt(2) are used to set and get + options, respectively. + +RETURN VALUES + -1 is returned if an error occurs; otherwise the return + value is a descriptor referencing the socket. + +ERRORS + EPROTONOSUPPORT + The protocol type or the specified protocol is not + supported within this domain. + + EMFILE There are too many open files. + + EACCES Permission to create a socket of the specified + type and/or protocol is denied. + + ENOBUFS or ENOMEM + Insufficient memory is available. The socket can- + not be created until sufficient resources are + freed. + + EINVAL Unknown protocol, or protocol family not avail- + able.
