python - 如何在python中清除存储在套接字中的数据
问题描述
我正在设计一个回合制游戏,它使用 connection.recv() 从套接字读取并将“移动”的数据存储在缓冲区(服务器从中读取)中。问题是,玩家可以在轮到之外发送数据以在套接字缓冲区中排队,这意味着服务器可能会从他们在轮到之外所做的移动中读取,而不是在他们转弯之前阻塞。有什么方法可以刷新存储在套接字中的数据,如果没有,还有其他解决方法吗?
解决方案
根据 Steffen 的建议,我正在使用 recv 调用来清除缓冲区。目前,我将套接字设置为非阻塞并调用recv,直到出现BlockingIOError。如果有人能指出一个更优雅的解决方案(不使用异常),将不胜感激。
connection.setblocking(False)
while True:
try:
chunk = connection.recv(4096)
except BlockingIOError as b:
break
connection.setblocking(True)
推荐阅读
- c# - 是否存在每次启动应用程序时都不会重置的变量?
- java - 在简单的Java程序中努力应用继承概念
- pyspark - 我们如何修复 ADLS Gen 2 中的增量位置文件
- azure - Azure 管道 - 在容器中执行阶段之一
- flutter - Flutter 中的大数据列表会导致性能不佳吗?
- c++ - 在 Visual Studio 中返回静态变量会引发错误
- java - 如何从 jTextField 文本更改 jButton 文本?
- python - 如何使用pptx python在同一个表格单元格中使用两种不同的字体样式和字体属性?
- c# - 如何根据 MVC 5 中的用户角色更改 url 中的区域名称
- php - XERO PHP SDK - Createinvoiceattachment 抛出 401 Unauthorized 错误