0

我需要从命令行参数中获取特定大小的字节数组:

rip = bytearray(4)   # IP data
rp = bytearray(2)    # Port Number
flag = bytearray(1)  # Identification Flag

每个都设置了不同的值,并将它们组合成一个字符串。这个字符串需要能够通过 UDP 套接字发送,我需要再次读取它们以获取另一个进程的信息。我想通过以下代码发送它们:

    socket.sendto(datastring, '127.0.0.1', LocalPort) #data string contains all bytearray data

并获取另一边的数据。我会使用列表或泡菜,但不允许这样做(并且列表无论如何都不会发送)。

这个问题在网上似乎有一千个答案,但没有一个是真正点击我的,或者他们经常看起来相关但没有帮助。如果有人可以对此有所了解,那么我将不胜感激。

编辑:这是我被同事打开的一些代码。它允许我将上面示例代码中的 IP 数据转换为 4 字节字符串对象。我相信我可以扩展它以涵盖上面的 7 个字节的材料。

# create 4-byte array of IP
srip = IP.split('.')    #splits IP into string array
GB = struct.Struct("4B")    #produces packer for packing IP into a string
rip = GB.pack(int(srip[0]), int(srip[1]), int(srip[2]), int(srip[3]))   #creates string to send via UDP 

>>>print type(rip)
<type 'str'>

我希望这是在正确的轨道上!

4

1 回答 1

1

这是你想要的?

ip_packet = "".join(chr(int(x)) for x in "255.23.0.1".split("."))
sock_client.write(ip_packet)
于 2013-10-29T02:51:34.507 回答