📄 server4.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 + -