Socket Programming in Python
Project 1: Countdown Protocol
Implemented a basic UDP-based client and server that run the following countdown protocol.
- Client
Send integer X to server.
Print “SENT “ + X.
while True:
Receive message from server
containing integer X.
Print “RECEIVED “ + X.
if X > 0:
Send integer X - 1 to server.
Print “SENT “ + X.
- Server
while True:
Receive message from client
containing integer X.
Print “RECEIVED “ + X.
if X > 0:
Send integer X - 1 to client.
Print “SENT “ + X.
Project 2: Simplified Web Server
-
listens to a TCP port
-
GET requests return 200 + the data for all existing files in tree
-
GET requests return 301 for all paths specified as redirects in redirects.defs and actually redirects the web client
-
GET requests return 404 for all non-existent paths and www/redirect.defs
-
HEAD requests return 200 (but no data) for all existing files
-
HEAD requests return 301, 404 for all paths in exactly the same way as for GET requests above
-
Any other unknown method returns a 405
-
Any malformed request returns a 400
-
Server can handle multiple requests in succession without restarting (loops around and accepts the connection again
-
Server either spawns new thread, forks new process, or asynchronously handles web requests