Python Network Programming 1 Introduction 4 2 Basic socket usage 5 2.1 Creating a socket . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.2 Connecting a socket and data transfer . . . . . . . . . . . . . . . . . . . . . . . 6 2.3 Binding a name to socket . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.4 Listening and accepting connections . . . . . . . . . . . . . . . . . . . . . . . . 6 2.5 UDP sockets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.6 Closing the socket . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.7 Using functions provided in socket module . . . . . . . . . . . . . . . . . . . . . 8 2.7.1 Functions based on resolver library . . . . . . . . . . . . . . . . . . . . . 8 2.7.2 Service-related functions . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.7.3 Miscellaneous functions . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3 Basic network structures design 9 3.1 Designing a TCP server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3.2 The TCP client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.3 Modeling datagram applications . . . . . . . . . . . . . . . . . . . . . . . . . . 11 4 Advanced topics on servers 13 4.1 Building a pristine environment . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 4.2 Handling multiple connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 4.2.1 Threaded servers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 4.2.2 Using select . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 4.2.3 Fork servers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 4.3 Dealing with classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 4.3.1 Simple connection object . . . . . . . . . . . . . . . . . . . . . . . . . . 18 4.3.2 Applying a design pattern . . . . . . . . . . . .