单线程并发的server端
其他
2018-10-05 23:57:03
阅读次数: 0
非阻塞I/O模型
- 主要是服务器的启动
sk.setblocking(False)
设置这个,当服务器没有连接或者接收不到消息时报BlockingIOError
错误
#server端
import socket
sk = socket.socket()
sk.bind(('127.0.0.1', 8080))
sk.listen()
sk.setblocking(False) #设置服务器的accept, recv均为非阻塞
conn_l = [] #连接上的conn都会加入这个列表中
del_l = [] #断开的conn都会加入到这个列表中
while 1:
try:
conn, addr = sk.accept()
conn_l.append(conn)
except BlockingIOError:
try:
for conn in conn_l:
ret = conn.recv(1024)
if ret == b'':
del_l.append(conn)
continue
else:
print(ret)
except BlockingIOError:
pass
for conn in del_l:
conn.close()
conn_l.remove(conn)
del_l.clear()
——————————————————————————————————
#client 客户端
多个客户端同时启动连接服务进行测试
转载自www.cnblogs.com/liliudong/p/9746286.html