码迷,mamicode.com
首页 > 编程语言 > 详细

python IO非阻塞模型

时间:2019-10-05 14:34:06      阅读:59      评论:0      收藏:0      [点我收藏+]

标签:pre   def   bind   没有   error   tar   remove   class   serve   

server端

import socket
sk = socket.socket()
sk.bind((127.0.0.1, 8010))
sk.setblocking(False)   #
sk.listen()
conn_l = []
del_conn = []
while True:
    try:
        conn, addr = sk.accept()    # 不阻塞,但是没人连我会报错
        print(建立连接了:, addr)
        conn_l.append(conn)
    except BlockingIOError:
        for con in conn_l:
            try:
                msg = con.recv(1024)  # 非阻塞,如果没有数据就报错
                if msg == b‘‘:
                    del_conn.append(con)
                    continue
                print(msg)
                con.send(bbye)
            except BlockingIOError:
                pass
        for con in del_conn:
            con.close()
            conn_l.remove(con)
        del_conn.clear()

client端

import time
import socket
import threading


def func():
    sk = socket.socket()
    sk.connect((127.0.0.1, 8010))
    sk.send(bhello)
    time.sleep(1)
    print(sk.recv(1024))
    sk.close()


for i in range(2):
    threading.Thread(target=func).start()

 

python IO非阻塞模型

标签:pre   def   bind   没有   error   tar   remove   class   serve   

原文地址:https://www.cnblogs.com/wt7018/p/11624441.html

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