单进程-单线程-非阻塞实现并发
import socket
import time
def main():
tcp_server_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
tcp_server_socket.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
tcp_server_socket.bind(("",7890))
tcp_server_socket.setblocking(False)
tcp_server_socket.listen(128)
client_socket_list = list()
while True:
time.sleep(0.5)
try:
new_client_socket,new_addr = tcp_server_socket.accept()
except Exception as ret:
print("没有新的客户端访问")
else:
print("有新的客户端到来")
new_client_socket.setblocking(False)
client_socket_list.append(new_client_socket)
for new_client_socket in client_socket_list:
try:
recv_data = new_client_socket.recv(1024).decode("utf-8")
except Exception as ret:
print("客户端没有发送数据")
else:
if recv_data:
print(recv_data)
else:
new_client_socket.close()
client_socket_list.remove(new_client_socket)
print("客户端已经关闭")
if __name__ == "__main__":
main()