Python3-socketserver模块-网络服务器框架

Python3中的socketserver模块简化了编写网络服务器的任务

  在实际的开发中,特别是多并发的情况下,socket模块显然对我们的用处不大,因为如果你要通过socket模块来实现并发的socket通信,简直太麻烦了,socketserver模块则是Python提供给你的现成的接口,你只需要编写少量的代码,就可以实现你的需求

  首先,您必须通过对BaseRequestHandler类进行子类化并覆盖其handle()方法来创建请求处理程序类;此方法将处理传入请求。其次,您必须实例化一个服务器类,将它传递给服务器的地址和请求处理程序类。然后调用服务器对象的handle_request()serve_forever()方法来处理一个或多个请求。最后,调用server_close()关闭套接字

import socketserver

class ThreadedTCPRequestHandler(socketserver.BaseRequestHandler):
"""
必须继承BaseRequestHandler类,重写handle()方法
"""
def handle(self):
result = self.request.recv(1024)
data = str(result, 'utf-8')
print(data)
rep_msg = input(">>>")
self.request.send(bytes(rep_msg, "utf-8")) # 运行服务
if __name__ == "__main__":
HOST, PORT = "127.0.0.1", 9999
# 根据需要实例化相应的类,并提供地址和实现的请求处理类
# class socketserver.ForkingTCPServer
# class socketserver.ForkingUDPServer
# class socketserver.ThreadingTCPServer
# class socketserver.ThreadingUDPServer
server = socketserver.ThreadingTCPServer((HOST, PORT), ThreadedTCPRequestHandler)
server.serve_forever()

服务端


import socket

HOST, PORT = "127.0.0.1", 9999
while True:
with socket.socket() as sk_client:
sk_client.connect((HOST, PORT))
req_msg = input(">>>")
sk_client.send(bytes(req_msg, 'utf8'))
rep_msg = sk_client.recv(1024)
print(str(rep_msg, "utf-8"))

客户端

参考资料

  http://python.usyiyi.cn/translate/python_352/library/socketserver.html

  

上一篇:linux 出现ping,错误提示:connect :network is unreachable


下一篇:使用Symantec代码签名证书对代码进行签名的 5 个理由