我有一个插座根据:
self.socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
self.socket.bind(('0.0.0.0', 67)) # Listen on port 67
现在,套接字侦听端口67上的所有接口。我等待一些消息:
message, address = self.socket.recvfrom(8192) # Blocking
收到消息后,我想在接收消息的同一接口上的端口68发送广播响应。
问题是:是否有某种方法可以检查消息并确定接收消息的网络接口,如果是,我该如何发送响应并提供该接口以进行传输?
在Windows上运行,Python 3.4。
答案 0 :(得分:1)
你做不到。如果你单独绑定每个IP地址(这将为每个接口打开一个套接字),你只能区分接口。
编辑:正如@jweyrich在下面的评论中指出的那样,在Windows上,名为IP_PKTINFO的套接字选项(当然Linux also)可以提供信息 - if