服务器组播 - MFC CSocket - C ++ - 如何?

时间:2013-12-20 15:06:17

标签: c++ sockets mfc multicast

我正在使用一些协议创建自己的服务器:TCP-PULL ok,TCP-PUSH ok,UDP-PULL ok(但我不能同时为两个客户端服务!),UDP-PUSH ok(相同)问题)。 现在,我需要创建我的最后一个协议:Multicast-PUSH,但我无法理解它是如何工作的,我真的不知道如何用C ++编写代码。我已经阅读了关于加入一个组的内容,并且在多播中没有连接,所以即使有人连接也会发送字节。

我使用MFC库和CSocket在C ++中编码。

可以请别人帮忙吗?

感谢的!!

1 个答案:

答案 0 :(得分:1)

考虑一个系统需要将相同信息发送到多个系统的示例。如何最好地完成这个?显而易见的方法是为每个目标系统建立一个套接字“连接”。当数据准备好发送时,发送方遍历每个“连接”,将数据传输到目标系统。每次发送消息时都必须进行此迭代过程,并且它必须是健壮的,这样如果一个系统的传输失败,则其余系统不会失败。但问题实际上比这更糟糕,因为通常多播交换机中的所有系统都要传输数据。这意味着每个系统都必须与希望参与的每个系统建立“连接”。

这是多播进入的地方。在多播中,发送方将一次数据发送到专用IP地址和称为多播组的端口。从那里,网络设备(例如,路由器)负责将数据转发到多播组中的其他系统。为了实现这一点,所有希望参与多播交换的系统必须“加入”多播组,这在套接字初始化期间发生,并且用于简单地通知网络设备系统希望参与多播交换。有一组特殊的IPv4地址用于组播 - 224.0.0.0到239.255.255.255。您必须使用此范围内的IP地址和您选择的端口号才能使多播正常工作。

查看CodeProject上的Multicast Wrapper Class,了解如何在MFC中执行此操作。