我正在用 C 语言为 Windows 编写一个程序,它必须向几个具有不同 IP 和端口的对等点发送消息。无需保证消息的传递。所以我希望发送不限于我所在的同一 LAN 的多播消息。
我该怎么做?我是否必须将每条消息分别发送给每个对等方,或者是否可以选择发送给每个人而无需重复?
我是否需要为每个对等点打开一个套接字连接?
谢谢, 迈克尔。
最佳答案
有两种常见的方法可以做到这一点。
UDP 单播
您在程序中维护一个 IP 地址接收者列表,遍历每个接收者并将每个数据报的拷贝发送给每个接收者。
IP多播
接收器列表必须存在于某处。如果您使用 IP 多播,则接收者列表由您的网络设备维护,通常是路由器或第 3 层交换机。在路由器中启用 Internet 组管理协议(protocol) (IGMP),然后接收者可以向路由器发送 IGMP 加入请求以将自己添加到多播组。多播组被定义为一个 IP 端点——一个 IP 地址和一个端口。在 IPv4 中,地址 224.0.0.0 到 239.255.255.255 被指定为多播地址。要向多播组的所有成员发送数据报,只需通过 UDP 单播将数据报发送一次到多播组端点。然后路由器会将数据报转发给该组的所有成员。
如果接收者与您不在同一个 LAN 上,您可能无法使用 IP 多播。 IP 多播只有在您事先知道所有可能加入您的多播组的接收者的网络路由,并确保所有网络设备都配置正确的情况下才能工作。
您不能在互联网上使用 IP 多播。
关于c++ - 如何向 C 窗口中的几个对等点发送多播消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5693869/