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)