2024-05-15 03:54:53 发布
网友
我试图用sockets在pygame中创建一个两人游戏,问题是,当我尝试在这条线上接收数据时:
message = self.conn.recv(1024)
python将挂起,直到它获得一些数据。问题在于,当客户端没有通过套接字发送任何内容并导致黑屏时,会暂停游戏循环。我怎样才能阻止recv这么做?
提前谢谢
您可以使用信号模块来停止挂起的recv线程。
在接收线程中:
try: data = sock.recv(1024) except KeyboardInterrupt: pass
在解释线程中:
signal.pthread_kill(your_recving_thread.ident, signal.SIGINT)
使用非阻塞模式。(见^{}。)
或者在调用recv之前检查是否有可用的数据。 例如,使用^{}:
recv
r, _, _ = select.select([self.conn], [], []) if r: # ready to receive message = self.conn.recv(1024)
您可以使用信号模块来停止挂起的recv线程。
在接收线程中:
在解释线程中:
使用非阻塞模式。(见^{} 。)
或者在调用} :
recv
之前检查是否有可用的数据。 例如,使用^{相关问题 更多 >
编程相关推荐