Skip to content

socketserver Module

The socketserver module provides classes for writing network servers, supporting both synchronous and asynchronous request handlers.

Complexity Reference

Operation Time Space Notes
Server creation O(1) O(1) Bind to port
Handle request O(n) O(n) n = request size
Serve loop O(m) O(m) m = concurrent requests

Creating Network Servers

TCP Server

import socketserver

class MyHandler(socketserver.StreamRequestHandler):
    def handle(self):
        """Handle client request - O(n)"""
        # Read from connection
        data = self.rfile.readline()
        print(f"Received: {data.decode()}")

        # Send response
        self.wfile.write(b"Echo: " + data)

# Create server - O(1)
with socketserver.TCPServer(("localhost", 8000), MyHandler) as server:
    # Serve - O(m) where m = requests
    server.serve_forever()

Multi-threaded Server

import socketserver

class MyHandler(socketserver.StreamRequestHandler):
    def handle(self):
        """Handle - O(n)"""
        data = self.rfile.readline()
        self.wfile.write(b"Response")

# Multi-threaded - O(1) setup
server = socketserver.ThreadingTCPServer(
    ("localhost", 8000),
    MyHandler
)

# Serve - O(m) concurrent
server.serve_forever()