15.3 socketpair Function


15.3 socketpair Function

The socketpair function creates two sockets that are then connected together. This function applies only to Unix domain sockets.

#include <sys/socket.h>

int socketpair(int family , int type , int protocol , int sockfd[2] ) ;

Returns: nonzero if OK, -1 on error

The family must be AF_LOCAL and the protocol must be 0. The type , however, can be either SOCK_STREAM or SOCK_DGRAM . The two socket descriptors that are created are returned as sockfd[0] and sockfd[1] .

This function is similar to the Unix pipe function: Two descriptors are returned, and each descriptor is connected to the other. Indeed, Berkeley-derived implementations employ pipe by performing the same internal operations as socketpair (pp. 253 “254 of TCPv3).

The two created sockets are unnamed; that is, there is no implicit bind involved.

The result of socketpair with a type of SOCK_STREAM is called a stream pipe . It is similar to a regular Unix pipe (created by the pipe function), but a stream pipe is full-duplex ; that is, both descriptors can be read and written. We show a picture of a stream pipe created by socketpair in Figure 15.7.

POSIX does not require full-duplex pipes. On SVR4, pipe returns two full-duplex descriptors, while Berkeley-derived kernels traditionally return two half-duplex descriptors (Figure 17.31 of TCPv3).



UNIX Network Programming Volume 1, Third Edition
Unix Network Programming, Volume 1: The Sockets Networking API (3rd Edition)
ISBN: 0131411551
EAN: 2147483647
Year: 2003
Pages: 441

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net