当前位置:  开发笔记 > 编程语言 > 正文

在Python中查找多播UDP消息的发送方的MAC地址?

如何解决《在Python中查找多播UDP消息的发送方的MAC地址?》经验,为你挑选了1个好方法。

我有一些代码通过UDP多播侦听"公告".我可以获取发件人的IP地址,但我真正需要的是发件人的MAC地址(因为IP地址可以并且将会改变).

有没有一种简单的方法在Python中执行此操作?

包含的代码段仅供参考,但可能不必要.

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)

# Allow multiple sockets to use the same PORT number
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

# Bind to the port that we know will receive multicast data
sock.bind((self.interface, MCAST_PORT))

# Tell API we are a multicast socket
sock.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_TTL, 255)

# Tell API we want to add ourselves to a multicast group
# The address for the multicast group is the third param

status = sock.setsockopt(socket.IPPROTO_IP, 
          socket.IP_ADD_MEMBERSHIP, 
          socket.inet_aton(MCAST_ADDR) + socket.inet_aton(self.interface));

data, addr = sock.recvfrom(1024)

...



1> unwind..:

一般来说,你不能获得mac地址.您可能在LAN上使用ARP成功,但在Internet上则不可能.

考虑一下您收到的数据包具有发送方NATting路由器的IP地址的情况.数据包可能已经遍历了任意数量的中间机器,每个中间机器也具有mac地址.谁应该支持你所追求的那种查询?对于整个过程中的所有机器,发送者的mac地址完全没用,为什么还要支持那种查找呢?

而且,顺便说一句,在许多网卡上更改mac地址是微不足道的,因此将它用作某种独特的ID并不是一个明智的想法.

推荐阅读
yzh148448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有