以下代码适用于Python 2.7.x但不适用于Python 3.x(类似于字节的对象不是str)我错过了什么?有没有更好的方法为Python3做这个?
def vsend(self, framestring):
totalsent = 0
metasent = 0
length =len(framestring)
lengthstr=str(length).zfill(8)
while metasent < 8 :
sent = self.sock.send(lengthstr[metasent:])
if sent == 0:
raise RuntimeError("Socket connection broken")
metasent += sent
while totalsent < length :
sent = self.sock.send(framestring[totalsent:])
if sent == 0:
raise RuntimeError("Socket connection broken")
totalsent += sent
错误:sent = self.sock.send(lengthstr [metasent:])TypeError:需要类似字节的对象,而不是'str'[WARN:0]终止异步回调
1 回答
正如错误所述,
send
需要一个类似字节的对象,而不是字符串 . 您可以通过encode()将它转换为字节,只是不要忘记接收它的另一边的decode() .