免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: kallytin
打印 上一主题 下一主题

[其他] 组播的问题 [复制链接]

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
11 [报告]
发表于 2013-01-10 14:02 |只看该作者
kallytin 发表于 2013-01-10 13:55
对,我要实现类似组播的功能......

另,就是因为想实现这个功能,所以想了解清楚组播到底是怎么回事 ...


我也只用过组播,路由器里面怎么玩的我就不清楚了

论坛徽章:
0
12 [报告]
发表于 2013-01-11 00:51 |只看该作者
回复 1# kallytin

有人知道吗

   

论坛徽章:
1
巳蛇
日期:2013-10-28 15:55:33
13 [报告]
发表于 2013-01-11 17:33 |只看该作者
组播可以分发到多个“订阅”该组播的ip里,由路由器或交换机负责具体数据的分发。可以跨网段。
比单播的优势是只需要传一次就可以送达所有客户端(理想情况下不丢包)。
客户端可以自由加入、退出组。
我就知道这些了。你可以google。

论坛徽章:
0
14 [报告]
发表于 2013-01-12 20:27 |只看该作者
惟吾无为 发表于 2013-01-11 17:33
组播可以分发到多个“订阅”该组播的ip里,由路由器或交换机负责具体数据的分发。可以跨网段。
比单播的优 ...


楼上,

你提到的"组"(即可以自由加入/退出),是在那里配置的呢?(即,比如我的例子中的"群组1",是在哪里定义的呢?)是在路由器里定义还是通过其他方式?

论坛徽章:
1
巳蛇
日期:2013-10-28 15:55:33
15 [报告]
发表于 2013-01-12 21:57 |只看该作者
本帖最后由 惟吾无为 于 2013-01-12 22:00 编辑

回复 14# kallytin

首先声明我没有C语言网络编程的经验。

  1.     man 7 ip
  2.    Socket Options
  3.        IP supports some protocol-specific socket options that can be set  with
  4.        setsockopt(2) and read with getsockopt(2).  The socket option level for
  5.        IP is IPPROTO_IP.  A boolean integer flag is zero  when  it  is  false,
  6.        otherwise true.

  7.        IP_ADD_MEMBERSHIP (since Linux 1.2)
  8.               Join a multicast group.  Argument is an ip_mreqn structure.

  9.                   struct ip_mreqn {
  10.                       struct in_addr imr_multiaddr; /* IP multicast group
  11.                                                        address */
  12.                       struct in_addr imr_address;   /* IP address of local
  13.                                                        interface */
  14.                       int            imr_ifindex;   /* interface index */
  15.                   };

  16.               imr_multiaddr  contains  the  address of the multicast group the
  17.               application wants to join or leave.  It must be a  valid  multi‐
  18.               cast  address  (or  setsockopt(2)  fails with the error EINVAL).
  19.               imr_address is the address of the local interface with which the
  20.               system  should  join  the  multicast  group;  if  it is equal to
  21.               INADDR_ANY an appropriate interface is  chosen  by  the  system.
  22.               imr_ifindex  is the interface index of the interface that should
  23.               join/leave the imr_multiaddr group, or 0 to indicate any  inter‐
  24.               face.

  25.               The  ip_mreqn  structure is available only since Linux 2.2.  For
  26.               compatibility, the old ip_mreq structure  (present  since  Linux
  27.               1.2)  is  still  supported; it differs from ip_mreqn only by not
  28.               including the imr_ifindex field.  Only valid as a setsockopt(2).

  29.        IP_DROP_MEMBERSHIP
复制代码

论坛徽章:
0
16 [报告]
发表于 2013-01-12 22:21 |只看该作者
惟吾无为 发表于 2013-01-12 21:57
回复 14# kallytin

首先声明我没有C语言网络编程的经验。


楼上,

谢谢你的回复.

也许是我在上次的帖子里表达得不够清楚。其实我想要的并不是代码。很多资料里面都说客户端可以通过“IGMP”申请加入/退出“某个组”,但是到现在我都没发现“这个组”到底是什么时候、又由谁创建的?整个创建的过程是怎么样的?怎么保证唯一性(比如:224.0.10.1这个地址在整个internet里面的状态是空闲的(可分配的)吗)?

论坛徽章:
1
巳蛇
日期:2013-10-28 15:55:33
17 [报告]
发表于 2013-01-12 22:41 |只看该作者
本帖最后由 惟吾无为 于 2013-01-12 22:44 编辑

回复 16# kallytin


在网络中,要确定组成员,需要使用一种协议,这种协议就是 IGMP (Internet
Group Management Protocol)因特网组管理协议,IGMP 运行在路由器和主机之间,
因为当组播发送者和组成员在不同网络时,需要路由器为组播数据提供转发,那么
路由器就必须确认自己直连的网络中是否存在组成员,可以使用查询和报告来发现
组成员,IGMP 就可以完成这样的工作。
----

具体你去google找文档吧。我思科没学好。只会linux。

-----

对了,上面的代码就是系统帮你加入退出组的。个人认为第一个加入组的就是组长了。。。

你还是去网络版问吧。

论坛徽章:
1
巳蛇
日期:2013-10-28 15:55:33
18 [报告]
发表于 2013-01-12 22:47 |只看该作者
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP