我需要编写一个在后台运行的 tcp 客户端。我在这个链接中找到了一个有趣的类,它完全符合我的需要:代码示例 - 套接字客户端线程。我想在我的项目中实现它,因为我发现它比标准库中的示例或 PyMOTW-3 中的模块更好。问题是,它是用 Python2 编写的,我不断收到此方法的错误:
def _recv_n_bytes(self, n):
data = ''
while len(data) < n:
chunk = self.socket.recv(n - len(data))
print(chunk)
if chunk == '':
break
data += chunk
return data
在我的研究中,我开始意识到 Py2 和 Py3 在字符串解释方面有不同的行为。所以我基本上尝试了解码/编码("UTF-8"("数据"或"块"的任何组合,但不知何故,我最终总是以这一行结束chunk = self.socket.recv(n - len(data))
,在那里我得到一个通用的"内存错误"(没有进一步的描述(!
有谁知道发生了什么?或者,任何人都可以建议我一个现成的类来为 tcp 客户端连接设置一个单独的线程吗?
谢谢。
最近自己玩插座,我遇到了同样的问题。您应该做的是对您发送给接收方的任何数据进行编码,并对您在客户端接收的任何数据进行解码。
所以你应该使用一些影响chunk = self.socket.recv(n - len(data)).decode()
在发送端,您应该按以下方式编码:socket.send(data.encode())