# #非阻塞
# 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())
# **********************************************