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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

  


以上是关于Python3-socketserver模块-网络服务器框架的主要内容,如果未能解决你的问题,请参考以下文章

5G网络的必需品——25G光模块/100G光模块

异步网络模块之aiohhtp的使用

WIFI模块在网络中的作用?

pytorch中的神经网络子模块(线性模块)——torch.nn.Linear

IOS 开发 网络详解AFNetworking总结

网络爬虫之requests模块