[英]Python sendto Error TypeError: must be str, not bytes
我看過其他回答的問題,發現的唯一解決方案是它需要將其編碼發送。 但是無論是否已編碼,我仍然會收到此錯誤。 有任何想法嗎??? 帶注釋的行是我為了使其按預期運行而刪除的行。 我是新手,所以希望這個問題有意義。(我正在使用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()
socket
對象需要一個bytes
(二進制)對象,而不是一個字符串(至少在Python 3中如此)。
因此,只需對兩個字符串進行編碼,結果就是一個bytes
對象:
s.sendto((Username + message).encode('utf-8'), server)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.