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

📄 server4.py

📁 python web programming 部分
💻 PY
字号:
import SocketServer
import sys

def freadns(f):
    """read a netstring from a file."""
    size = ""
    while 1:
        c = f.read(1)
        if c == ":":
            break
        elif not c:
            raise IOError, "short netstring read"
        size = size + c
    size = sz = int(size)
    s = ""
    while sz:
        ss = f.read(sz)
        if not ss:
            raise IOError, "short netstring read"
        s += ss
        sz -= len(ss)
    if len(s) != size:
        raise IOError, "short netstring read"
    if f.read(1) != ",":
        raise IOError, "missing netstring terminator"
    return s

def fwritens(f, s):
    """write a netstring to a file."""
    s = encode(s)
    f.write(s)

def encode(s):
    """return a string's netstring."""
    return "%d:%s," % (len(s), s)

handlerClass = SocketServer.StreamRequestHandler
serverClass = SocketServer.TCPServer
if len(sys.argv) > 1:
    if sys.argv[1] == "-u":
        handlerClass = SocketServer.DatagramRequestHandler
        serverClass = SocketServer.UDPServer
    elif sys.argv[1] != "-t":
        sys.exit("Unknown option: "+sys.argv[1])

class MyRequestHandler(handlerClass):
    def handle(self):
        rq = freadns(self.rfile)
        print "From:", self.client_address, ":", rq
        print "----------------------"
        sys.stdout.flush()
        result = rq.upper()
        fwritens(self.wfile, result)

myServer = serverClass(('', 8081),
                MyRequestHandler)
myServer.serve_forever()

⌨️ 快捷键说明

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