[閒聊] python 大師請進 sock

看板Marginalman作者 (JerryChung)時間1周前 (2024/05/09 23:38), 編輯推噓0(001)
留言1則, 1人參與, 1周前最新討論串1/1
import socket sock = socket.socket() sock,connect((server, port)) while True: resp = sock.recv(8192).decode('utf-8') dt = datetime.now() print(f'{dt} {resp}') if len(resp) == 0: break 遇到錯誤是 resp = sock.recv(8192).decode('utf-8') UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe6 in position 1451: unexpected end of data 這是因為內容太長 超過8192被截斷 導致解碼錯誤嗎?是的話 recv 應該設多少比較好 ChatGPT的回答有個方式 data = b'' while True: chunk = sock.recv(8192) if not chunk: break data += chunk try: resp = data.decode('utf-8') except UnicodeDecodeError as e: print(f'解碼錯誤: {e}') 這個接收方式 while 應該要放在哪? 然後它收到的下一個數據是這輪沒接收完的 還是下一輪的數據 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.45.61.248 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1715269138.A.50A.html

05/09 23:40, 1周前 , 1F
你的protocol最好有header去表示packet length
05/09 23:40, 1F
文章代碼(AID): #1cFEuIKA (Marginalman)