想将一段特殊的包含重复16遍MAC地址的数据包广播发送,以下是我的目标数据内容
假设MAC地址为:00 8C 4D 5C 6F 3A,MAC真实地址就是字面地址,翻译成二进制,那么数据包内容应该为:
00000000 10001100 01001101 01011100 01101111 00111010,然后这个数据重复16次。
我将这段数据存储在一个mac_list列表中。
为了发送这个数据,我的方法如下
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
s.sendto(mac_list, ('255, 255, 255, 0', 0))
因为python只有字符串和整数类型,如果直接mac_list,我猜是无效的(因为暂时没机器给我做测试)
所以我将里面的每个元素转换成了10进制的整数。然后用struct.pack的方法打包。就导致下面几个问题,始终无法排除
1.存储这段数据的是一个列表,但pack好像无法打包列表类型,这个我也不确定是不是我语法错了,还是说有另外的方法,我的方法如下,mac_list为存储这段数据的列表
s = struct.pack('>96i',*mac_list)
错误1,无法打包列表
手动debug填入数据,比如struct.pack('>2i',255,255)
错误2,列表里面已经将每位转换为整数,但整数在python中占2位,而且上面这个结果看不懂。结果为
000000ff000000ff。
而我的目标数据要么是FFFF,要么是111111111111111
不知道上面步骤是我想错了呢,还是哪里方法不对。虽说这里面肯定有错,但我不知道错在哪。。请教各位大神了
我感觉i在python中是4 字节吧
评论 (
) 引用此答案
举报