• 模块socketserver,服务端并发socket


    我们已经学会了socket去写服务端了...但是,socket只能一对一的去跟客户端去链接..多个用户就只能等待前一个用户断开,用户体验很不好..

    其实很简单,socketserver大多都是固定写法

     1 import socketserver
     2 class Server(socketserver.BaseRequestHandler):      # 创建一个服务器类,继承父类socketserver.BaseRequestHandler
     3     def handle(self):
     4         # 固定写法,运行时,每个客户端对象会运行此方法,如果没有,就会执行父类BaseRequestHandler中handle方法
     5         msg = self.request.recv(1024).decode()
     6         print(msg)
     7         answer = input("请输入信息:").encode()
     8         self.request.send(answer)
     9 
    10 
    11 if __name__=="__main__":
    12     server = socketserver.ThreadingTCPServer(("127.0.0.1",9999),Server)
    13     # 创建多个并发对象,将本地服务器IP及所创建的服务器类类名传入
    14     server.serve_forever()
    15     # 一直执行此对象

    这样,一个简单的并发服务器就完成了,,可以与多个客户端,进行简单的收发消息操作

    实际上socketserver执行原理和socket是一样的,只是为每个客户端创建一个对象去执行而已..

    简单看看源码:

    1 在父类中为对象封装属性,,将我们传入的地址,和类名传入.创建socket对象,并运行绑定和监听

    2 绑定和监听的实现方法

    3 接下来运行对象中,我们定义的handle方法,,每次连接创建不同的对象,所以可以实现并发

    所以,如果handle名称不一致,会运行父类的handle,而pass

    上面就是socketserver的实现步骤了..

  • 相关阅读:
    mysql 插入字段 字符串
    python---统计列表中数字出现的次数
    pycharm激活
    Jmeter遇到的坑
    通用接口测试用例设计【转】
    selenium系列------元素定位套路
    jmeter系列-------注意事项
    jmeter系列-------脚本编写格式
    jmeter系列------变量的提取
    jmeter系列------参数关联
  • 原文地址:https://www.cnblogs.com/NoteBook3013/p/10426408.html
Copyright © 2020-2023  润新知