Our third and final topic under the theme of communications is the Sockets API. This is the programmer’s interface to the TCP/IP protocol itself. Sockets are supported by all major operating systems, via a standard C-level interface. This interface is available in Python on all platforms, enabling you to write custom communications protocols. Chapter 15, describes a number of Python library modules that implement the standard protocols. The Python standard library contains many examples of how to write applications using sockets.
The key concepts bear some similarity to the serial communications we saw earlier: there is a file-like interface that permits reading and writing, and the same issue of not knowing when a transmission has finished. However, you can’t guarantee a response in a given timeframe, and indeed responses on the Internet can vary widely from fractions of a second up to several seconds.
Sockets are great fun to experiment with, particularly in Python, where the client socket can be scripted from an interactive console session. Ideally you need two computers close to each other on the same TCP/IP network; however, one machine works fine as long as it has TCP/IP installed. Sockets can communicate between processes on the same machine.