3

我试图简单地通过 UDP 发送一个字节列表,代码基于示例 Python 套接字模块。客户端/服务器传输适用于字符串。似乎使用字节数组是要走的路,但是,收到的长度似乎取决于内容。发送 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]
4

2 回答 2

6

10 和 11 分别是换行和制表符的 ASCII 码。strip() 调用正在从数据中删除它们。

于 2013-02-17T05:45:44.503 回答
2

不要使用 strip() - 这是为了从字符串中删除空格和换行符。在您的情况下,它认为 10 是空格并将其删除。

>>> len(bytearray([1,2,3,4,5,10]))
6
>>> len(bytearray([1,2,3,4,5,10]).strip())
5
于 2013-02-17T05:48:20.720 回答