我正在尝试从特定端口发送IP数据包数据,并使底层的linux网络代码在ARP表查找和第2层数据(以太网层)的创建方面完成了大部分工作。
我尝试过以下操作,但setsockopt不断抛出错误“Protocol not available”。
try:
s = socket.socket( socket.AF_PACKET, socket.SOCK_RAW, ETH_P_IP )
s.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1)
s.bind( (iface, ETH_P_IP) )
except socket.error, msg:
raise Exception('Socket could not be created. Error: ' + str(msg[0]) + ', Message: ' + msg[1])
while True:
px = '45000054604640004001e8abc0a83801c0a8386500006a8c0eac0001f3c661550000000066d70c0000000000101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f3031323334353637'.decode('hex')
s.sendto(px, ('eth0', 0))
我尝试手动将IPPROTO_IP const设置为0,255并且不支持...我缺少什么?
TIA!