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

      

  • 相关阅读:
    学习笔记—查找
    水晶报表图表制作问题
    Chrome对最小字体的限制
    Devexpress的ASPxDateEdit控件设置其‘today’ 为客户端当前日期
    水晶报表多表数据源
    System.Web.HttpValueCollection.ThrowIfMaxHttpCollectionKeysExceeded
    利用水晶报表制作甘特图
    水晶报表打印时最后多打印一空白页
    day3学习
    Python高级自动化培训day1
  • 原文地址:https://www.cnblogs.com/qq1207501666/p/6703117.html
Copyright © 2011-2022 走看看