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

      

  • 相关阅读:
    为什么要有handler机制
    安卓五种数据存储的方式
    Activity生命周期详解
    JS的一些简单实例用法
    JSP 中的EL表达式详细介绍
    JSP九大内置对象和四个作用域
    JS实现---图片轮播效果
    实现 鼠标移动到表格的某行 该行换背景 ---myEclipse编写
    JS 菜单收拉样式
    spring中aware接口的
  • 原文地址:https://www.cnblogs.com/qq1207501666/p/6703117.html
Copyright © 2011-2022 走看看