我想知道是否有一种方法可以让Python等待直到接收到服务器的响应才继续运行。
我正在编写一个回合制游戏。我做出第一步,然后它将移动发送到服务器,然后再发送给另一台电脑。问题就在这里。由于现在轮到对手了,我希望我的游戏等待直到从服务器接收到响应(等待对手进行移动)。但是我的代码行:
data=self.sock.recv(1024)
程序卡住了(我认为)是因为没有立即获取到某些东西。因此,我想知道如何让它等待某些事件的发生,然后继续执行。
提前感谢。
我想知道是否有一种方法可以让Python等待直到接收到服务器的响应才继续运行。
我正在编写一个回合制游戏。我做出第一步,然后它将移动发送到服务器,然后再发送给另一台电脑。问题就在这里。由于现在轮到对手了,我希望我的游戏等待直到从服务器接收到响应(等待对手进行移动)。但是我的代码行:
data=self.sock.recv(1024)
程序卡住了(我认为)是因为没有立即获取到某些东西。因此,我想知道如何让它等待某些事件的发生,然后继续执行。
提前感谢。
你需要设定一个固定的消息大小或在消息开头发送消息大小
在调用socket.recv时,传递你实际需要的字节数(我猜你并不需要1024个字节)。然后使用循环,因为不能保证一次调用能获取到所有你需要的数据。
sock.recv(1024)
会阻塞直到接收到1024个字节或操作系统检测到套接字错误。你需要知道消息大小的方法——这就是为什么HTTP消息包括Content-Length的原因。