• IO多路复用多并发服务器模板


     1 import socket
     2 import selectors    # IO多路复用选择器
     3 
     4 epoll_selector = selectors.EpollSelector()  # 实例化选择器
     5 server = socket.socket()    # 实例化套接字
     6 server.bind(('', 6666)) # 地址和端口
     7 server.listen(100)  #侦听数
     8 
     9 def recv(conn): # 数据处理
    10     recv_data = conn.recv(1024)
    11     if recv_data:   # 判断是否存在
    12         res = recv_data.decode()    # 解码接收到的数据
    13         print(res)
    14         conn.send(recv_data)    # 发送数据
    15     else:
    16         epoll_selector.unregister(conn) # 解除监视,关闭监控
    17         conn.close()    # 关闭连接
    18 
    19 def accept(server): # 连接处理
    20     conn, addr = server.accept() # 生成一个对等连接套接字
    21 
    22     epoll_selector.register(conn, selectors.EVENT_READ, recv)   # 注册毁掉函数
    23 
    24 
    25 epoll_selector.register(server, selectors.EVENT_READ, accept) # 注册回调函数
    26 
    27 
    28 while True:
    29     events = epoll_selector.select()    # 查询事件
    30 
    31     for key, mask in events:    # 拆包
    32         callback = key.data
    33         sock = key.fileobj
    34         callback(sock)
  • 相关阅读:
    2019年4月
    20190423
    20190419
    20190418
    20190417
    free命令详解(转载)
    https改造过程中的一个坑
    GitLab 实现代码自动部署(转载自https://segmentfault.com/a/1190000011561808)
    js和php写日历
    shell递归遍历目录的方法
  • 原文地址:https://www.cnblogs.com/mxwei/p/9226508.html
Copyright © 2020-2023  润新知