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()