我正在寻找一些网络专家来帮助我解决问题。我有很多计算机运行我使用 UDP 多播的软件。如果计算机仅连接到一个网络(网络 A),则此方法工作正常。我的计算机(也在运行所述软件)将在端口 XXXX 上监听多播。这台计算机有两个网卡,当我将它连接到另一个网络(网络 B)时,我的软件出现故障。问题是我不知道给定的多播来自哪个网络。如果我发送多播,我不能告诉它使用网络 A 而不是网络 B,反之亦然。
我的问题:
- 有没有办法区分来自不同网络的数据包??
- 有没有办法向网络 A 而不是网络 B 发送多播?
我正在使用 C++ 和 Win32 套接字。感谢任何回复的人。
最佳答案
您应该在您加入该组的一个 接口(interface)上监听多播数据包。您应该明确设置用于发送多播数据包的接口(interface)(否则它们将像其他所有内容一样路由,默认路由等)。两者都是通过 setsockopt
调用完成的。以下是一些适合您的链接:
- Multicast programming - 谈论设置“发送”界面,
- IP Multicast Extensions - 讨论“发送”和“接收”接口(interface)。
免责声明:公认的链接是以 Unix 为中心的,因此您的 Windows 里程可能会有所不同 :)
关于sockets - 来自特定网卡的 UDP 组播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4054238/