【发布时间】:2010-03-02 20:55:03
【问题描述】:
你好
我想通过加入多播组来捕获 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
【问题讨论】:
标签: python