当前位置:  开发笔记 > 程序员 > 正文

如何忽略自己的广播udp数据包

如何解决《如何忽略自己的广播udp数据包》经验,为你挑选了1个好方法。

对于以下我假设一张网卡.

我有我的程序的一个组件,旨在让子网中的其他人知道它的存在.为此,我已经实现了一个解决方案,无论何时程序启动(以及之后定期)它都会向广播发送广播INADDR_BROADCAST- 无论谁在所需端口上进行侦听,都会记住它来自何处以供以后使用.

这个问题是我不想记住我自己的广播.我认为理论上这很容易做 - 只需找出本地ip并与你得到的内容进行比较recvfrom.

但是,我发现很难获得本地IP:getaddrinfo返回NULL 127.0.0.1,getaddrinfo主机名返回公共IP.任何人都可以指向我找到实际的子网IP的方向?我想我必须错过一些非常明显的东西但是......我还是错过了:)

注意:我已经阅读了有关广播的其他SO问题,特别是这一个:所有接口上的UDP-Broadcast,但我尚未解决多接口问题.



1> Simeon Pilgr..:

在启动时,您可以使用随机(但跟踪)值广播不同的消息,然后等待该消息,发现您自己的地址,从那时起,您可以发送正常消息,忽略您的来源消息.

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