import socket import time tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) tcp_socket.bind(("", 9999)) tcp_socket.listen(128) tcp_socket.setblocking(False) new_socket_list = list() while True: time.sleep(1) # 用于调试 try: new_socket, new_addr = tcp_socket.accept() except Exception as e: print("没有客户连接") else: print("新来了客户端连接%s:%s" % new_addr) new_socket.setblocking(False) new_socket_list.append(new_socket) for socket in new_socket_list: try: recv_data = socket.recv(1024) except Exception as e: print("%s:%s没有发送过来数据" % new_addr) else: if recv_data: print("接收%s:%s发送来的数据" % new_addr) else: # recv_data为空,说明客户端调用了close,此时该socket全部数据接收完毕,应从列表移除 socket.close() new_socket_list.remove(socket) print("%s:%s断开连接" % new_addr)
原文:https://www.cnblogs.com/olivertian/p/12609861.html