簡體   English   中英

Python sendto錯誤TypeError:必須為str,而不是字節

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM