我有Java的经验,但我必须将Java库集成到同事的python代码中。进入jython,耶!在
我们正在尝试发送一个UDP包,其中包含非常特定的数据段。在
我们是这样建立数据包的:version = 0x0001
referenceNumber = 0x2323
bookID = byteArray('df82818293819dbafde818ef')
为了便于解释,假设byteArray接受一个十六进制数字字符串并返回一个字节数组
然后我们构建数据包:
^{pr2}$
把它从插座里送出去。在
我知道这是不正确的,数据类型不可能是正确的,所以concat不会做正确的事情。我们如何正确地建立这个包?python文档说s.sendTo()接受一个字符串?我想我想要一个替代s.sendTo()的方法,它需要一个字节数组。在
我们希望数据包到达服务器时udp数据段如下所示:00 01 23 23 df 82 81 82 93 81 9d ba fd e8 18 ef
在python中实现这一点的正确方法是什么?在
我们使用wireshark来验证数据包是否正确到达,现在udp数据段看起来好像python将每个字段转换为ascii表示。例如,referenceNumber字段作为文本字符串“0x2323”的ascii值出现。这是有意义的,因为s.sendTo()接受一个字符串。在
===================解决方案================================
是的,就是这样。。。显示了我对python有多新。对于好奇的人来说,以下是密码:version = '0001'
referenceNumber = '2323'
packet = a2b_hex(version)
packet += a2b_hex(referenceNumber)
.. etc
那就s.send(packet)