我已经查看了其他已回答的问题,我发现的唯一解决方案是它需要将其编码发送。但无论是否编码,我仍然会收到此错误。有任何想法吗???注释行是我删除以使其按预期运行的行。我对此很陌生,所以希望这个问题有道理。(我使用的是3.6版本)
Host = servershost
Port = 12345
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind((Host, Port))
s.setblocking(0)
rT = threading.Thread(target=receiving, args=("RecvThread", s))
rT.start()
message = input(Username + ": ")
#s.sendto(message)
while message != 'q':
if message != '':
s.sendto(Username + message.encode('utf-8'), server)
#tlock.aquire()
message = input(Username + ': ')
tlock.release()
time.sleep(0.2)
shutdown = True
rT.Join()
s.close()
答案 0 :(得分:0)
socket
对象需要一个bytes
(二进制)对象,而不是一个字符串(至少在Python 3中)。
因此,只需编码两个字符串,结果就是bytes
对象:
s.sendto((Username + message).encode('utf-8'), server)