zoukankan      html  css  js  c++  java
  • selor模块

     1 import selectors, socket
     2 
     3 sel = selectors.DefaultSelector()
     4 
     5 
     6 def accept(sock, mask):
     7     coon, addr = sock.accept()
     8     print('accepted', coon, 'from', addr)
     9     coon.setblocking(False)
    10     sel.register(coon, selectors.EVENT_READ, read)
    11 
    12 
    13 def read(coon, mask):
    14     try:
    15         data = coon.recv(1000)
    16         if data:
    17             print('echoing', repr(data), 'to', coon)
    18             coon.sendall(data)
    19         else:
    20             raise Exception
    21     except:
    22         print('closing', coon)
    23         sel.unregister(coon)
    24         coon.close()
    25 
    26 
    27 sock = socket.socket()
    28 sock.bind(('127.0.0.1', 8090))
    29 sock.listen(100)
    30 sock.setblocking(False)
    31 sel.register(sock, selectors.EVENT_READ, accept)  # 注册一个对象,和触发该对象后要执行的函数。
    32 print('server..............')
    33 while True:
    34 
    35     events = sel.select()
    36     for key, mask in events:
    37         callback = key.data
    38         callback(key.fileobj, mask)  # key.fileobj是响应的那个对象,比如是socket

    客户端

     1 import socket
     2 
     3 client_socket = socket.socket()
     4 
     5 client_socket.connect(('127.0.0.1',8090))
     6 while True:
     7     a = input('....')
     8 
     9     client_socket.sendall(a.encode())
    10     data = client_socket.recv(1024)
    11     print(data.decode())

    阻塞IO      非阻塞IO     IO多路复用    

  • 相关阅读:
    博客园转文章的方法
    http协议相关面试题
    接口测试基础01
    文件上传下载
    括号-回溯
    幂集-回溯
    分割数组为连续子序列- -贪心法
    不使用临时变量交换数字
    计数质数
    拼接最大值
  • 原文地址:https://www.cnblogs.com/ch2020/p/12819756.html
Copyright © 2011-2022 走看看