通过UDP发送字节列表

时间:2013-02-17 05:42:00

标签: python sockets udp

我正在尝试简单地通过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]

2 个答案:

答案 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