python 套接字阻止 recv 挂起?

标签 python sockets pygame

我正在尝试使用套接字在 pygame 中创建一个两人游戏,问题是,当我尝试在此行上接收数据时:

message = self.conn.recv(1024)

python 挂起,直到它获得一些数据。这个问题是当客户端没有通过套接字发送任何东西并导致黑屏时暂停游戏循环。我怎样才能阻止 recv 这样做?

提前致谢

最佳答案

使用非阻塞模式。 (参见 socket.setblocking。)

或者在调用recv之前检查是否有数据可用。 例如,使用 select.select :

r, _, _ = select.select([self.conn], [], [])
if r:
    # ready to receive
    message = self.conn.recv(1024)

关于python 套接字阻止 recv 挂起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20289981/

相关文章:

python - PyQt QTcpServer : How to return data to multiple clients?

sockets - 在 Tomcat/Jetty 上设置套接字发送缓冲区大小

python - 使用非阻塞 udp 读取时丢失消息

c++ - 为什么写入此套接字会丢弃读取缓冲区(这是真的发生了什么)?

python - Pygame display.info 给出了错误的分辨率大小

没有 Pygame 的 Python 游戏设计

python - 我可以使用上下文值作为 click.option() 默认值吗?

python - 如何在 Django 模板中经历两个循环

python - 为什么 VSCode 在启动调试器之前不激活 conda?

python - 如何询问玩家是否愿意在死亡时重试,如果他们说愿意,则重新启动游戏