如何用Python捕获UDP数据包并查找TTL值
你好
我想通过加入一个多播组来捕获UDP数据包。在接收到数据包后,我想检查这个UDP数据包的TTL值。我该如何用Python来实现这个呢?
下面是示例代码: 这里的 rec_port 是我用来绑定的任意端口,比如:9180 rec_hostname 是我加入的任意多播组,比如:239.2.2.2
#! /usr/bin/env python
.........
............
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.bind(("", rec_port))
mreq = struct.pack("4sl", socket.inet_aton(rec_hostname), socket.INADDR_ANY)
sock.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq)
total_length = 0
while True:
print "Waiting for the packets, if no packets recevied by 10 seconds, than i will exit"
sock.settimeout(10)
data , address = sock.recvfrom(2048)
if len(data) > 1:
total_length=total_length + len(data)
print "Data is:", data
print "Length of data received is:", len(data)
print "Packet recevied from :", address[0]
print "Total Packet size:", total_length
else:
break
sock.close()
print "Total Packet size:", total_length