import asyncore, asynchat
import os, socket, string
PORT = 8000
class HTTPChannel(asy nchat.async_cha t):
def __init__(self, server, sock, addr):
asynchat.async_ chat.__init__(s elf, sock)
self.set_termin ator("\r\n")
self.request = None
self.data = ""
self.shutdown = 0
def collect_incomin g_data(self, data):
self.data = self.data + data
def found_terminato r(self):
if not self.request:
# got the request line
self.request = string.split(se lf.data, None, 2)
if len(self.reques t) != 3:
self.shutdown = 1
else:
self.push("HTTP/1.0 200 OK\r\n")
self.push("Cont ent-type: text/html\r\n")
self.push("\r\n ")
self.data = self.data + "\r\n"
self.set_termin ator("\r\n\r\n" ) # look for end of headers
else:
# return payload.
self.push("<htm l><body><pre>\r \n")
self.push(self. data)
self.push("</pre></body></html>\r\n")
self.close_when _done()
class HTTPServer(asyn core.dispatcher ):
def __init__(self, port):
asyncore.dispat cher.__init__(s elf)
self.create_soc ket(socket.AF_I NET, socket.SOCK_STR EAM)
self.bind(("", port))
self.listen(5)
def handle_accept(s elf):
conn, addr = self.accept()
HTTPChannel(sel f, conn, addr)
#
# try it out
s = HTTPServer(PORT )
print ("serving at port", PORT, "...")
asyncore.loop()
import os, socket, string
PORT = 8000
class HTTPChannel(asy nchat.async_cha t):
def __init__(self, server, sock, addr):
asynchat.async_ chat.__init__(s elf, sock)
self.set_termin ator("\r\n")
self.request = None
self.data = ""
self.shutdown = 0
def collect_incomin g_data(self, data):
self.data = self.data + data
def found_terminato r(self):
if not self.request:
# got the request line
self.request = string.split(se lf.data, None, 2)
if len(self.reques t) != 3:
self.shutdown = 1
else:
self.push("HTTP/1.0 200 OK\r\n")
self.push("Cont ent-type: text/html\r\n")
self.push("\r\n ")
self.data = self.data + "\r\n"
self.set_termin ator("\r\n\r\n" ) # look for end of headers
else:
# return payload.
self.push("<htm l><body><pre>\r \n")
self.push(self. data)
self.push("</pre></body></html>\r\n")
self.close_when _done()
class HTTPServer(asyn core.dispatcher ):
def __init__(self, port):
asyncore.dispat cher.__init__(s elf)
self.create_soc ket(socket.AF_I NET, socket.SOCK_STR EAM)
self.bind(("", port))
self.listen(5)
def handle_accept(s elf):
conn, addr = self.accept()
HTTPChannel(sel f, conn, addr)
#
# try it out
s = HTTPServer(PORT )
print ("serving at port", PORT, "...")
asyncore.loop()