zoukankan      html  css  js  c++  java
  • 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

      

  • 相关阅读:
    js获取当前系统时间
    input标签之外是否一定添加form标签
    用css实现凹陷的线条
    js中的类型和函数参数传递类型问题
    jqDOM操作
    js中null与undefined的区别
    centos 支持复制与粘贴
    docker 部署springboot应用
    springboot springcloud 父项目pom工程创建pom文件
    自写流程图 支持批量展示
  • 原文地址:https://www.cnblogs.com/qq1207501666/p/6703117.html
Copyright © 2011-2022 走看看