2
我想在Python中編寫一個服務器來與預先存在的客戶端進行通信,該客戶端的消息數據包是ASCII字符串,但由四字節無符號整數值表示,前者表示長度爲剩餘字符串。Python字符串前綴4字節長度
我已經做了一個接收器,但我確信有一個更pythonic的方式。直到我找到它,我還沒有完成發件人。我可以很容易地計算消息長度,將其轉換爲字節並傳輸消息。我努力的是創建一個四字節數組的整數。
讓我澄清一下:如果我的字符串長度爲260個字符,我希望預先包含一個260字節的大端四字節整數表示形式。所以,我不希望字符串前面的ASCII字符串「0260」 ,相反,我需要代表0x00000104的四個(非ASCII)字節。
我對代碼收到從客戶端前綴字符串的長度是這樣的:
sizeBytes = 4 # size of the integer representing the string length
# receive big-endian 4 byte integer from client
data = conn.recv(sizeBytes)
if not data:
break
dLen = 0
for i in range(sizeBytes):
dLen = dLen + pow(2,i) * data[sizeBytes-i-1]
data = str(conn.recv(dLen),'UTF-8')
我可以簡單地做反向。我對Python很陌生,覺得我所做的事可能是徒手!
1)有沒有更好的方法來接收和解碼長度?
2)什麼是「姐妹」的方法來編碼傳輸的長度?
謝謝。
我知道我在做這件事很難。謝謝! – KDM
我發現解壓縮返回一個元組,所以我不得不長度= struct.unpack(「>我」,received_msg [:4])[0] – KDM
哦,對不起,你是對的。我會更新我的答案 – Pedru