我正在尝试简单地通过UDP发送字节列表,代码基于示例Python套接字模块。客户端/服务器传输适用于字符串。似乎使用bytearray是要走的路,然而,收到的长度似乎取决于内容。发送1,2,3,4,5,6工作正常,但如果我将6更改为10或11,我只在服务器上收到5个字节。 Ubuntu上的Python 2.7.3。我不理解的是什么?
客户端:
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]
答案 0 :(得分:5)
10和11分别是新行和制表符的ASCII码。 strip()调用将它们从数据中删除。
答案 1 :(得分:1)
不要使用strip() - 用于从字符串中删除空格和换行符。在你的情况下,它认为10是空白并删除它。
>>> len(bytearray([1,2,3,4,5,10]))
6
>>> len(bytearray([1,2,3,4,5,10]).strip())
5