# #非阻塞
# from socket import *
# from time import sleep,ctime
# s=socket()
# s.bind(('0.0.0.0',7895))
# s.listen(3)
# #设置为非阻塞状态
# s.setblocking(False)
# while True:
# print('等待连接')
# try:
# c,addr = s.accept()
# except BlockingIOError:
# # 没有链接的时候就等两秒后跳过程序
# sleep(2)
# #
# print(ctime())
# continue
# else:
# print('连接成功')
# # 没有超时则接收数据
# while True:
# data =c.recv(1024).decode()
# if not data:
# break
# print(data)
# c.send(ctime().encode())
# c.close()
# ***************************************
# 超时检测
# from socket import *
# from time import sleep,ctime
# s=socket()
# s.setsockopt(SOL_SOCKET,SO_REUSEADDR,1)
# s.bind(('0.0.0.0',7895))
# s.listen(3)
# #设置为非阻塞状态
# # 设置超时若超过时间则返回超时
# s.settimeout(5)
# while True:
# print('等待连接')
# try:
# c,addr = s.accept()
# except timeout:
# # 超过时间就跳过重来
# print(ctime())
# continue
# else:
# # 没有超时间就接收数据
# print('连接成功')
# while True:
# data =c.recv(1024).decode()
# if not data:
# # 接收数据为空时候就结束接收
# break
# print(data)
# c.send(ctime().encode())
# c.close()
# *******************************************
#select
# from socket import *
# from select import select
# s=socket()
# s.setsockopt(SOL_SOCKET,SO_REUSEADDR,1)
# s.bind(('0.0.0.0',7895))
# s.listen(3)
# rlist=[s]
# wlist=[]
# xlist=[]
# while True:
# rl,wl,xl=select(rlist,wlist,xlist,)
# for r in rl:
# if r is s:
# c,addr = s.accept()
# rlist.append(c)
# else:
# data=c.recv(1024)
# if not data:
# rlist.remove(r)
# r.close()
# else:
# # 否则将套接字添加到列表中
# wlist.append(r)
# for w in wl:
# w.send('收到消息了'.encode())
# wlist.remove(w)
# for x in xl :
# if x is s :
# s.close()
# **********************************************
# #poll
# from socket import *
# from select import select
# s=socket()
# s.setsockopt(SOL_SOCKET,SO_REUSEADDR,1)
# s.bind(('0.0.0.0',7895))
# s.listen(3)
# fdmap ={s.fileno():s}
# p=select.poll()
# p.register(s,POLLIN | POLLERR)
# while True:
# events=p.poll()
# for fd,event in events:
# if fd == s.fileno():
# c,addr = s.accept()
# p.register(c,POLLIN)
# fdmap[c.fileno()]=c
# elif event&POLLIN:
# data=fdmap[fd].recv(1024)
# if not data:
# p.unregister(fd)
# fdmap[fd].close()
# del fdmap[fd]
# else:
# print(data.decode())
# fdmap[fd].send('收到'.encode())
# **********************************************
python IO多路复用源码
原创
©著作权归作者所有:来自51CTO博客作者东方佑的原创作品,请联系作者获取转载授权,否则将追究法律责任
上一篇:python运算符重载例子
下一篇:python类继承实例
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Java NIO - IO多路复用详解
本文主要对IO多路复用,Ractor模型以及Java NIO对其的支持。
Java IO/NIO/AIO