$ mimetype test.html
test.html: text/html
$ mimetype *
spam.jpg: image/jpeg
egg.gif: image/gif
Lag en enkel webserver som implementerer GET-metoden. En HTTP-request ser slik ut:
GET /en/eller/annen/fil.html HTTP/1.1
Du kan overse alt annet enn den første linjen foreløpig.
Hvis filen finnes, sender du tilbake en response som består av en header, en blank linje og filen som ble requestet.
HTTP/1.0 200 Document follows
Server: Myserver/1.0
Content-Type: text/html
Content-Length: 1023
...
Content-Type er filens MIME-type. Den kan du enten hardkode til
"text/html", eller du kan bruke koden fra forrige oppgave.
For å gjøre det litt enklere har jeg laget denne lille modulen.
import socket
def create(port=8080, reuse_address=0):
"""Return a socket bound to the given port."""
host=''
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
if reuse_address:
sock.setsockopt(socket.SOL_SOCKET,
socket.SO_REUSEADDR, 1)
sock.bind((host, port))
sock.listen(1)
return sock