python并发之IO的非阻塞模型

python并发之IO的非阻塞模型,第1张

"""
非阻塞
            设置属性非阻塞:    sock.setbloking(bool) false表示不阻塞,每3秒检测一次
            超时检测:	sock.settimeout(second)
"""
from socket import *
from time import sleep, ctime

# 日志文件
p = open("log.txt", 'a+')

soc = socket(AF_INET, SOCK_STREAM)
# 设置端口立即重用
soc.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
# 绑定服务器地址
soc.bind(("127.0.0.1", 9090))
# 开启监听(阻塞等待)
soc.listen(5)

# 设置套接字为非阻塞
# soc.setblocking(False)

# 设置超时检测
soc.settimeout(3)


# 循环等待客户端接入
while True:
    print("waiting for connect...")
    # 客户接入(没有客户端接入每隔3秒写一条日志)
    try:
        c, addr = soc.accept()
    except (BlockingIOError,timeout) as a:
        sleep(3)
        p.write("%s : %s \n" % (ctime(), a))
        p.flush()
    else:
        print("connect from ", addr)
        data = c.recv(1024).decode()
        print(">>", data)

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/569549.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-09
下一篇 2022-04-09

发表评论

登录后才能评论

评论列表(0条)

保存