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()