sockets - 来自特定网卡的 UDP 组播

标签 sockets winapi

我正在寻找一些网络专家来帮助我解决问题。我有很多计算机运行我使用 UDP 多播的软件。如果计算机仅连接到一个网络(网络 A),则此方法工作正常。我的计算机(也在运行所述软件)将在端口 XXXX 上监听多播。这台计算机有两个网卡,当我将它连接到另一个网络(网络 B)时,我的软件出现故障。问题是我不知道给定的多播来自哪个网络。如果我发送多播,我不能告诉它使用网络 A 而不是网络 B,反之亦然。

我的问题:

  1. 有没有办法区分来​​自不同网络的数据包??
  2. 有没有办法向网络 A 而不是网络 B 发送多播?

我正在使用 C++ 和 Win32 套接字。感谢任何回复的人。

最佳答案

您应该在您加入该组的一个 接口(interface)上监听多播数据包。您应该明确设置用于发送多播数据包的接口(interface)(否则它们将像其他所有内容一样路由,默认路由等)。两者都是通过 setsockopt 调用完成的。以下是一些适合您的链接:

免责声明:公认的链接是以 Unix 为中心的,因此您的 Windows 里程可能会有所不同 :)

关于sockets - 来自特定网卡的 UDP 组播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4054238/

相关文章:

c++ - C++ 中的 Win32 显示中文...我做错了什么?

c++ - 我可以使用 C++ 在 EXE 文件中找到资源的偏移量吗?

c - 如何在 C 中通过网络分段发送二进制文件?

linux - 无法使用 PF_PACKET 将原始数据包发送到本地 mac?

Python Socket 接收大量数据

delphi - SetWindowsHookEx 是否可以在 Mac Mini 上的 Windows 7 上运行(类似)

c++ - 进程 ID 和进程名称

angularjs - 使用 angular.factory 时更新 socket.io 握手数据

node.js - Node.js+Socket.io+MongoDB webapps 是如何真正异步的?

c++ - 在 DATETIMEPICK_CLASS 元素中获取和设置日期