我正在使用这行代码来解码从Python中的Socket收到的字符串,但是当我运行程序时,这行无限运行,只是在Python shell中显示为闪烁的光标:
received = self.sock.recv(16).decode()
如果您知道如何修复它,我们将不胜感激!
答案 0 :(得分:1)
它不是无限循环。它只是在recv调用上阻塞,因为没有足够的数据可供读取。您已经请求读取16个字节,并且recv将阻塞直到16个字节可用 - 并且您的套接字还没有16个字节。
尝试使用较低的值 - 甚至更好 - 使套接字无阻塞。 编写非阻塞套接字读取工作要多一些 - 所以如果你确切地知道要读取多少字节,最好给出读取()的确切数字。
如果没有,请在非阻塞套接字上查看此答案。答案有两种不同的方法。