📄 server.py
字号:
#!/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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -