python-单进程、线程、非堵塞实现并发的验证

import socket
import time

tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tcp_socket.bind(('', 7899))
tcp_socket.listen(128)
tcp_socket.setblocking(False) # 设置套接字为非堵塞
client_socket_list = list()

while True:
time.sleep(1)

try:
new_tcp_socket, tcp_addr = tcp_socket.accept()
except Exception as ret:
print('---没有新的客户到来---', ret)
else:
print('---只要没有产生异常,那么也就意味着来了一个新的客户端---')
new_tcp_socket.setblocking(False)
client_socket_list.append(new_tcp_socket)

for client_socket in client_socket_list:
try:
recv_data = new_tcp_socket.recv(1024)
except Exception as ret:
print('---这个客户端没有发送数据过来---', ret)
else:
print(recv_data)
if recv_data:
print('---客户端发送了数据为{}'.format(recv_data))
else:
# 对方调用了close, 导致了 recv 返回
client_socket.close()
client_socket_list.remove(client_socket)

tcp_socket.close()

原文地址:https://www.cnblogs.com/fuyouqiang/p/11777878.html