⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 server.py

📁 python web programming 部分
💻 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 + -