码迷,mamicode.com
首页 > 其他好文 > 详细

selor模块

时间:2020-05-02 22:35:14      阅读:93      评论:0      收藏:0      [点我收藏+]

标签:code   import   server   from   客户端   dal   ted   int   llb   

 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多路复用    

selor模块

标签:code   import   server   from   客户端   dal   ted   int   llb   

原文地址:https://www.cnblogs.com/ch2020/p/12819756.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!