Python套接字绑定0.0.0.0,检查传入消息

时间:2015-05-26 11:51:01

标签: python sockets

我有一个插座根据:

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。

1 个答案:

答案 0 :(得分:1)

你做不到。如果你单独绑定每个IP地址(这将为每个接口打开一个套接字),你只能区分接口。

编辑:正如@jweyrich在下面的评论中指出的那样,在Windows上,名为IP_PKTINFO的套接字选项(当然Linux also)可以提供信息 - if