我正在研究一种通信协议,该协议应该通过在本地网络上广播/多播对等体地址来支持自我配置。直观的方式是广播地址,但事实证明,很难可靠地找出当前机器的本地IP地址(取决于配置,您可能会得到“127.0.0.1”或另一个无用的地址) 。请问socket.recvfrom总是返回一个有效的地址吗?
另一种方法是不在广播消息中包含主机地址,而是让接收者在它们的套接字上调用recvfrom
,它不仅返回接收到的数据,还返回发送者的地址。正如我所看到的那样,这个调用在Unix和Windows(我的一个需求)上都可用,并且可能还有更多的平台。我现在的问题是,有没有这种情况下,这可能会失败,recvfrom
返回一个无法访问或无用的地址?
这个问题会更好的堆栈溢出。 – Blrfl 2012-07-17 10:38:17
@Blrfl:你是对的,我的错。你是否愿意投票赞成离题话题,以便我们可以将它移到那里? – 2012-07-17 12:21:49
我有70分可以做到这一点。但我会给你写一个答案。 :-) – Blrfl 2012-07-17 14:54:40