zoukankan      html  css  js  c++  java
  • 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)
  • 相关阅读:
    BluetoothGetRadioInfo 函数
    BluetoothFindRadioClose 函数
    BluetoothFindNextRadio 函数
    BluetoothFindFirstRadio 函数
    BLUETOOTH_DEVICE_INFO 函数
    BluetoothSetServiceState 函数
    Bluetooth Functions
    union联合体学习
    置顶
    Toppo: 1
  • 原文地址:https://www.cnblogs.com/mxwei/p/9226508.html
Copyright © 2011-2022 走看看