2013-02-17 47 views
1

我想通過UDP發送一個字節列表,基於示例Python套接字模塊的代碼。客戶端/服務器傳輸在字符串上正常工作。似乎使用一個字節陣列是一條路,但是,收到的長度似乎取決於內容。發送1,2,3,4,5,6正常工作,但如果我將6更改爲10或11,則只能在服務器上接收5個字節。 Ubuntu上的Python 2.7.3。我不瞭解什麼?通過UDP發送一個字節列表

客戶:

data = bytearray([1,2,3,4,5,6]) 
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 
sock.sendto(data, (HOST, PORT)) 

服務器:

class MyUDPHandler(SocketServer.BaseRequestHandler): 
    def handle(self): 
     data = self.request[0].strip() 
     socket = self.request[1] 
     print len(data) 
     idata = map(ord, data) 
     print len(idata) 
     print idata[0],idata[1],idata[2],idata[3] 

回答

4

10和11分別是用於新的生產線和標籤,ASCII碼。 strip()調用將它們從數據中刪除。

+0

哈!做得好。原來的示例代碼就是這樣,我沒有注意到。 – 2013-02-17 05:49:28

1

不要使用strip() - 這是爲了從字符串中刪除空格和換行符。就你而言,它認爲10是空白並將其刪除。

>>> len(bytearray([1,2,3,4,5,10])) 
6 
>>> len(bytearray([1,2,3,4,5,10]).strip()) 
5