C++ 如何在C窗口中向多个对等方发送多播消息

C++ 如何在C窗口中向多个对等方发送多播消息,c++,c,udp,winsock,multicast,C++,C,Udp,Winsock,Multicast,我正在用C为windows编写一个程序,它必须向两个对等方发送消息,每个对等方具有不同的IP和端口。无需保证消息的传递。所以我希望发送一条多播消息,而不限于我所在的同一个局域网 我该怎么做?我是否必须将每条消息分别发送给每个对等方,或者是否有一个选项可以不迭代地发送给每个人 我是否需要打开与每个对等方的套接字连接 谢谢, Michael。有两种常见的方法可以做到这一点 UDP单播 您在程序中维护一个IP地址接收器列表,迭代每个接收器并向每个接收器发送每个数据报的副本 多播 接收者名单必须存在于某

我正在用C为windows编写一个程序,它必须向两个对等方发送消息,每个对等方具有不同的IP和端口。无需保证消息的传递。所以我希望发送一条多播消息,而不限于我所在的同一个局域网

我该怎么做?我是否必须将每条消息分别发送给每个对等方,或者是否有一个选项可以不迭代地发送给每个人

我是否需要打开与每个对等方的套接字连接

谢谢,
Michael。

有两种常见的方法可以做到这一点

UDP单播 您在程序中维护一个IP地址接收器列表,迭代每个接收器并向每个接收器发送每个数据报的副本

多播 接收者名单必须存在于某个地方。如果使用IP多播,则接收器列表由网络设备维护,通常是路由器或第3层交换机。在路由器中启用Internet组管理协议(IGMP),然后接收者可以向路由器发送IGMP加入请求,将自己添加到多播组。多播组定义为IP端点——IP地址和端口。在IPv4中,地址224.0.0.0到239.255.255.255被指定为多播地址。要向多播组的所有成员发送数据报,只需通过UDP单播将数据报发送一次到多播组端点。路由器随后将数据报转发给组中的所有成员

如果接收器与您不在同一局域网上,您可能无法使用IP多播。IP多播只有在您可以提前知道可能加入您的多播组的所有接收器的网络路由,并确保所有网络设备都已正确配置的情况下才能工作


您不能在internet上使用IP多播。

有两种常见的方法

UDP单播 您在程序中维护一个IP地址接收器列表,迭代每个接收器并向每个接收器发送每个数据报的副本

多播 接收者名单必须存在于某个地方。如果使用IP多播,则接收器列表由网络设备维护,通常是路由器或第3层交换机。在路由器中启用Internet组管理协议(IGMP),然后接收者可以向路由器发送IGMP加入请求,将自己添加到多播组。多播组定义为IP端点——IP地址和端口。在IPv4中,地址224.0.0.0到239.255.255.255被指定为多播地址。要向多播组的所有成员发送数据报,只需通过UDP单播将数据报发送一次到多播组端点。路由器随后将数据报转发给组中的所有成员

如果接收器与您不在同一局域网上,您可能无法使用IP多播。IP多播只有在您可以提前知道可能加入您的多播组的所有接收器的网络路由,并确保所有网络设备都已正确配置的情况下才能工作


你不能在internet上使用IP多播。

嗨,Michael,你怎么知道同龄人会在听?他们将注册此应用程序的哪个mcast地址?嗨,Mike,我可以假设对等方正在侦听我已知的侦听端口,但我不需要保证消息的传递。我对mcast套接字一点也不熟悉,我想知道要使用的正确msdn函数以及该过程的通常工作流程-例如打开套接字、将其绑定到端口等…Michael,多播在工作方式上与单播非常不同。。。由于您的客户机甚至可能与您的服务器不在同一LAN段上,因此他们需要向
IGMPv2
IGMPv3
注册,以便网络基础设施知道向谁发送多播。此外,如果mcast消息是通过路由器发送的,您的IT团队将需要进行配置(通常他们也在交换机上进行配置……通常这并不重要),如果还没有配置的话。我不是windows程序员,因此无法对windows特定问题发表评论。您确定需要在此处进行多播吗?看起来您只需要向不同的对等方发送相同的数据,即使用多个“单播”流。如果您需要使用TCP,您将有连接开销等。如果您改用UDP,您应该能够满足您的需求(不保证向多个接收者提供相同的数据)。嗨,Michael,您如何知道对等方会倾听?他们将注册此应用程序的哪个mcast地址?嗨,Mike,我可以假设对等方正在侦听我已知的侦听端口,但我不需要保证消息的传递。我对mcast套接字一点也不熟悉,我想知道要使用的正确msdn函数以及该过程的通常工作流程-例如打开套接字、将其绑定到端口等…Michael,多播在工作方式上与单播非常不同。。。由于您的客户机甚至可能与您的服务器不在同一LAN段上,因此他们需要向
IGMPv2
IGMPv3
注册,以便网络基础设施知道向谁发送多播。此外,如果mcast消息是通过路由器发送的,您的IT团队将需要进行配置(通常他们也在交换机上进行配置……通常这并不重要),如果还没有配置的话。我不是windows程序员,因此无法对windows特定问题发表评论。您确定需要在此处进行多播吗?看起来您只需要向不同的对等方发送相同的数据,即使用多个“单播”流。如果您需要使用TCP,您将有连接开销等。如果改用UDP,您应该能够满足您的需求(不保证向多个接收器提供相同的数据)