当前位置: 首页 > 知识库问答 >
问题:

在Python 3.3.5中解码从套接字接收的消息时出现无限循环

陈飞语
2023-03-14
received = self.sock.recv(16).decode()

如果你知道如何修复它,任何帮助将是感激的!

共有1个答案

齐文林
2023-03-14

它不是在无限循环中。它只是在recv调用上阻塞,因为没有足够的数据可以读取。您已经请求读取16个字节,recv将阻塞,直到16个字节可用--而您的套接字还没有16个字节。

尝试使用较低的值--甚至更好的值--使套接字不阻塞。编写非阻塞套接字读操作要多做一点工作--所以如果您确切地知道要读多少字节,那么最好给出确切的数字来代替read()。

如果不是,看一下非阻塞套接字上的这个答案。答案有两种不同的方法

 类似资料:
  • 我一直在开发一个简单的python套接字聊天室,客户端和服务器可以在其中相互发送消息。我遇到的问题是服务器和客户端一次只能发送一条消息。我希望它能像任何其他聊天室一样工作,在那里我可以在发送消息时收到消息,任何帮助都会有很大帮助

  • 我使用jax-ws 2.2.7来生成web服务。操作签名是: TKS!!!

  • 我正在尝试使用Springframework SimpMessageTemplate(默认Stomp实现)来流式传输时间序列数据,以将消息广播到SockJS客户端订阅的主题。但是,这些消息是按顺序接收的。服务器是单线程的,消息按时间戳升序发送。客户端以某种方式接收到了顺序错误的消息。 我使用的是stompjs和springframework的最新版本(4.1.6版本)。

  • 我有一个游戏,我正在用一些网络来制作多人游戏。我创建了一个自定义模块(在任何方面都不是最好的),将两个值(XY)从-1048576转换为1048576,一个值从0到60(健康),转换为6个字符。所以我可以用6个字节发送所有的信息。 但是这在Python 2中工作,在Python 3中,我发现我不能发送带有字符的“str”,所以我在发送之前使用了“. encode()”,在我的任何函数中使用“. d

  • 我在运行方案时遇到以下错误。 编辑:在DOCKER容器中运行时发生(使用最新的DOCKER图像用于chrome浏览器,并使用node-chrome-debug) 任何想法都将不胜感激。