This chapter describes the GNU facilities for interprocess communication using sockets.
A socket is a generalized interprocess communication channel. Like a pipe, a socket is represented as a file descriptor. But, unlike pipes, sockets support communication between unrelated processes, and even between processes running on different machines that communicate over a network. Sockets are the primary means of communicating with other machines; telnet , rlogin , ftp , talk , and the other familiar network programs use sockets.
Not all operating systems support sockets. In the GNU library, the header file `sys/socket.h' exists regardless of the operating system, and the socket functions always exist, but if the system does not really support sockets, these functions always fail.
Incomplete: We do not currently document the facilities for broadcast messages or for configuring Internet interfaces.
| Socket Concepts | Basic concepts you need to know about. |
| Communication Styles | Stream communication, datagrams, and other styles. |
| Socket Addresses | How socket names (``addresses'') work. |
| File Namespace | Details about the file namespace. |
| Internet Namespace | Details about the Internet namespace. |
| Misc Namespaces | Other namespaces not documented fully here. |
| Open/Close Sockets | Creating sockets and destroying them. |
| Connections | Operations on sockets with connection state. |
| Datagrams | Operations on datagram sockets. |
| Inetd | Inetd is a daemon that starts servers on request. The most convenient way to write a server is to make it work with Inetd. |
| Socket Options | Miscellaneous low-level socket options. |
| Networks Database | Accessing the database of network names. |