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
posted on 2017-04-13 11:28 AustralGeek 阅读(365) 评论(0) 编辑 收藏 举报