我正在寻找一些网络专家来帮助我解决问题。我有很多计算机运行我的软件,该软件使用 UDP 多播。如果计算机仅连接到一个网络(网络 A),则此方法可以正常工作。我的计算机(也运行上述软件)将在端口 XXXX 上侦听多播。这台计算机有两个网卡,当我将其连接到另一个网络(网络 B)时,我的软件就会失控。问题是我不知道给定的多播来自哪个网络。如果我发送多播,我无法告诉它使用网络 A 而不是网络 B,反之亦然。
我的问题:
- 有没有办法区分来自不同网络的数据包?
- 有没有办法将多播发送到网络 A 而不是网络 B?
我正在使用 C++ 和 Win32 套接字。感谢任何回复的人。
您应该侦听多播数据包one您加入群组的界面。您应该显式设置用于发送多播数据包的接口(否则它们将像其他所有内容一样路由,默认路由等)。两者都是通过setsockopt
来电。这里有一些链接供您参考:
-
组播编程 http://tldp.org/HOWTO/Multicast-HOWTO-6.html- 谈论设置“发送”接口,
-
IP 组播扩展 http://www.kohala.com/start/mcast.api.txt- 谈论“发送”和“接收”接口。
免责声明:无可否认,这些链接是以 Unix 为中心的,因此您的 Windows 里程可能会有所不同:)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)