client 發一個訊息,server回復一個訊息
sever端代碼如下:(這個是成功的)
def send_back_no_header(newSocket,response,isNeedHeader=True):
try:
print('send_back_no_header response is:',response)
jresp = json.dumps(response)
final_resp = bytes(jresp,encoding="utf-8")
print("final_resp is:",final_resp)
if isNeedHeader:
length_resp = len(final_resp)
print("length_resp is:",length_resp)
resp_len = struct.pack('i',length_resp)
print("resp_len is:",resp_len)
newSocket.send(resp_len)
newSocket.send(final_resp)
print("end send ")
except Exception as e:
print('send_back_no_header e is:',e)
但是client 發送了一個檔案后,server端接收到訊息然后下載檔案。
下載程序前后想給client 回傳訊息,告訴client端 server正在做什么,但是無論再接收檔案資料之前還是接收檔案資料完成后,再次發送給client訊息都報錯,代碼和上面的一樣。
報錯內容是:
descriptor 'send' requires a '_socket.socket' object but received a 'bytes'
另注明:接收檔案資料和回傳client訊息都是在一個執行緒
期待大佬給個思路
uj5u.com熱心網友回復:
協議定義的質量問題基于socket的雙向通訊協議最重要,你的需求完全可以在FTP協議上增加幾個命令處理即可
二進制資料和文本資料處理方式不一樣。你的需求中兩種都需要,就需要把協議定義完善
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/138734.html
