我使用struct.pack/unpack.encoding('ascii')爲從一個字符到另一個字符的窗口編寫了一個客戶端服務器。我想看看它是否能在ubuntu上正常工作,當我檢查時,我得到一個錯誤,它無法解壓我的數據,甚至沒有整數。Python結構不能在Linux下工作。編碼?
的錯誤是在這裏,在服務器中,當我嘗試接收和解壓數據
nr1 = c.recv(4096)
nr1 = struct.unpack('!i',nr1)[0]
它說,它需要4個字節的字符串參數,但我要送一個int ...經過一番研究,我明白它一定是編碼相關的東西,但沒有別的。任何想法,爲什麼它不工作?
這裏就是我送(從客戶端)的INT部分:
a = [1,2,3,4]
nra = len(a)
c.send(struct.pack('!i',nra))
'unpack'從字符串變爲整數(或任何其他的格式字符串指定)。也許你想'struct.pack()'而不是,如果你的輸入是一個整數,你想要一個字符串? –
...說,'recv()'肯定會返回一個字符串,所以我懷疑你說你發送一個int的地方,這是錯誤的。 –
...不管怎樣,在點之前查看'nr1'的* actual *內容。它是否太短(所以你需要'recv()'來獲得更多的內容)?它是否太長(以致它不再符合格式字符串的說明符)?如果不是'nr1 = c.recv(4096)'你包含'nr1 ='...這裏有一個實際的字符串...',那麼人們可能會重現你的錯誤,而不需要一個接收你可以看到的數據的套接字,但是沒有人可以。 –