不要通过循环遍历所有套接字来接收所有套接字的消息
创始人
2025-01-10 23:00:11
0

一种解决方法是使用非阻塞I/O和事件驱动的编程模型,例如使用select、poll或者epoll等函数来同时监听多个套接字的读事件。这样可以避免通过循环遍历所有套接字来接收消息。

以下是一个使用select函数的示例代码:

import select
import socket

# 创建套接字并监听
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('localhost', 8888))
server_socket.listen(5)

# 设置非阻塞模式
server_socket.setblocking(False)

# 创建select对象并注册监听套接字
selector = select.select()
selector.register(server_socket, select.POLLIN)

while True:
    # 监听套接字上是否有可读事件发生
    events = selector.poll()
    
    for key, event in events:
        # 如果是监听套接字有可读事件,则表示有新的连接请求
        if key.fileobj == server_socket:
            client_socket, client_address = server_socket.accept()
            print('New connection from', client_address)
            
            # 设置新连接的套接字为非阻塞
            client_socket.setblocking(False)
            
            # 将新套接字注册到select对象中
            selector.register(client_socket, select.POLLIN)
        
        # 如果是客户端套接字有可读事件,则表示有消息到达
        else:
            client_socket = key.fileobj
            data = client_socket.recv(1024)
            
            if data:
                print('Received data:', data.decode())
            else:
                print('Client closed connection')
                # 关闭套接字并从select对象中注销
                selector.unregister(client_socket)
                client_socket.close()

上述代码中,通过调用select.select()函数可以同时监听多个套接字的读事件,并返回有读事件发生的套接字列表。这样,就可以避免通过循环遍历所有套接字来接收消息。

相关内容

热门资讯

透视脚本!aapoker透视方... 透视脚本!aapoker透视方法(透视)详细如何设置胜率辅助插件(有挂透明);1、玩家可以在aapo...
二分钟辅助挂!德普之星辅助器a... 二分钟辅助挂!德普之星辅助器app,德普之星透视辅助软件激活码,教你攻略(有挂解说);1、下载好德普...
透视脚本!aapoker透视插... 透视脚本!aapoker透视插件(透视)详细可以控制牌辅助插件(有挂解说)1、上手简单,内置详细流程...
十分钟辅助挂!德普之星私人局辅... 十分钟辅助挂!德普之星私人局辅助免费,德普之星有辅助软件吗,可靠技巧(有挂黑科技)1、每一步都需要思...
透视脚本!aapoker发牌逻... 透视脚本!aapoker发牌逻辑(透视)详细可以拿好牌辅助插件(有挂解密)1、任何aapoker发牌...
一分钟透视!德普之星私人局辅助... 一分钟透视!德普之星私人局辅助器(透视)详细的辅助工具介绍(有挂揭秘)1、金币登录送、破产送、升级送...
透视脚本!aapoker插件(... 透视脚本!aapoker插件(透视)详细可以开辅助器辅助app(有挂工具)1、aapoker插件ai...
六分钟辅助挂!德普之星有辅助软... 六分钟辅助挂!德普之星有辅助软件吗,德普之星的辅助工具介绍,2025新版总结(有挂详情);所有人都在...
十分钟辅助挂!德普之星的辅助工... 十分钟辅助挂!德普之星的辅助工具介绍,德普之星透视软件免费入口官网,揭秘教程(有挂详情)1、任何德普...
透视脚本!aapoker透视脚... 透视脚本!aapoker透视脚本入口(透视)详细辅助器是真的辅助器安装(有挂透明)1、玩家可以在aa...