企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
[TOC] # 4次挥手后尽快释放 ~~~ import socket def main(): server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 设置当服务器先close 即服务器端4次挥手之后,资源能够立即释放 server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) server_socket.bind(('', 7788)) server_socket.listen(128) while True: client_socket, client_addr = server_socket.accept() ~~~ # 非阻塞socket ~~~ import socket import time tcp_server_tcp = socket.socket(socket.AF_INET, socket.SOCK_STREAM) tcp_server_tcp.bind(('', 7890)) tcp_server_tcp.listen(128) # 设置套接字为非阻塞方式 tcp_server_tcp.setblocking(False) client_socket_list = list() while True: #为了看到结果 time.sleep(0.5) try: new_socket, new_addr = tcp_server_tcp.accept() except Exception as ret: print('--没有新客户端到来---') else: print('---只要没有产生异常,那么也就意味着 来了一个新的客户端---') new_socket.setblocking(False) # 设置套接字为非阻塞的方式 client_socket_list.append(new_socket) for client_socket in client_socket_list: try: recv_data = client_socket.recv(1024) except Exception as ret: print(ret) print('---这个客户端没有发送过来数据---') else: print('---没有异常---') print(recv_data) if recv_data: # 对方发送过来数据 print('---客户端发送过来了数据---') else: # 对方调用close,导致recv返回 client_socket.close() client_socket_list.remove(client_socket) print('客户端已经关闭') ~~~