server.py

来自「python web programming 部分」· Python 代码 · 共 56 行

PY
56
字号
#!/c/python20/python
# $Workfile: Server.py $ $Revision: 6 $
# $Date: 10/04/01 6:39p $ $Author: Sholden $
#
import asyncore, socket, sys
import Handler

class http_server(asyncore.dispatcher):
    """Simple asynchronous HTTP server."""

    def __init__(self, ip, port):
        """Create a handler for each incoming client connection."""
        self.ip= ip
        self.port = port
        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)

def serve():

    port = 8080

    if len(sys.argv) >1:
        try:
            port = int(sys.argv[1])
        except:
            sys.exit("Illegal port number")

    server = http_server('', port)
    try:
        asyncore.loop(1.0) # Frequent checks for interrupt
    except KeyboardInterrupt:
        print "Completed" # on console

if __name__ == "__main__":
    serve()

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?