Glendower: I can call spirits from the vasty deep. Hotspur: Why so can I, or so can any man, But will they come when you do call for them?
Sockets are endpoints for communication. Some types of sockets provide reliable communications. Others offer few guarantees, but consume low system overhead. Socket communication can be used to let processes talk on just one machine or over the Internet.
In this chapter we consider the two most commonly used types of
. Streams provide a bidirectional,
sequenced, and reliable channel of communication—similar to
pipes. Datagram sockets do not guarantee
sequenced, reliable delivery, but they do guarantee that message
boundaries will be preserved when read. Your system may support other
types of sockets as well; consult your
(2) manpage or equivalent documentation for details.
We also consider both the Internet and Unix domains. The Internet domain gives sockets two-part names: a host (an IP address in a particular format) and a port number. In the Unix domain, sockets are named using files (e.g., /tmp/mysock).
In addition to domains and types, sockets also have a protocol associated with them. Protocols are not very important to the casual programmer, as there is rarely more than one protocol for a given domain and type of socket.
Domains and types are normally identified by numeric constants (available through functions exported ...