server.py
来自「python web programming 部分」· Python 代码 · 共 60 行
PY
60 行
#!/c/python20/python
# $Workfile: Server.py $ $Revision: 4 $
# $Date: 10/07/01 1:47p $ $Author: Sholden $
#
import asyncore, socket, sys
import Handler
from Params import LOGFILE
class http_server(asyncore.dispatcher):
"""Simple asynchronous HTTP server."""
def __init__(self, ip, port, logfile):
"""Create a handler for each incoming client connection."""
self.ip= ip
self.port = port
self.logfile = logfile
self.sessions = {"NEXT": 0L}
asyncore.dispatcher.__init__(self)
self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
self.bind((ip, port))
self.listen(5)
def readable(self):
"""Stop dispatcher from reading the socket until it can accept connections."""
return self.accepting
def handle_accept(self):
"""Create a handler for each client connection."""
try:
conn, addr = self.accept()
except socket.error: # rare Linux error
print "Socket error on server accept()"
return
except TypeError: # rare FreeBSD3 error
print "EWOULDBLOCK exception on server accept()"
return
Handler.HTTP(conn, addr, self.sessions, self.logfile)
def serve():
port = 8080
if len(sys.argv) >1:
try:
port = int(sys.argv[1])
except:
sys.exit("Illegal port number")
logfile = open(LOGFILE, "a")
server = http_server('', port, logfile)
try:
asyncore.loop(1.0) # Frequent checks for interrupt
except KeyboardInterrupt:
print "Completed" # on console
logfile.close()
if __name__ == "__main__":
serve()
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?