作业帮 > 综合 > 作业

关于组播,如果我的程序是运作在Windows下面,我如何得到我的组播地址(如何计算)?下面的客户机如何向组播地址注册自己

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/12 15:35:23
关于组播,
如果我的程序是运作在Windows下面,我如何得到我的组播地址(如何计算)?下面的客户机如何向组播地址注册自己的ip?如何注销自己的IP?
广播的时候计算广播地址需要知道该子网的子网掩码?如何得到该子网的子网掩码(通过函数,非人工手动获得)?
组播地址好像不是计算出来的,如果在局域网内,尽管用(只要不用224.0.0.0/24就可以)
加入组播实际上是让网卡加一个过滤网,目的地址与此相同的统统放进.也可以说,一台主机加入某个组,等于它多了一个ip地址(d类).
一个例子:
winsock1的函数 setsockopt
标志:IP_ADD_MEMBERSHIP,IP_DROP_MEMBERSHIP
关键的结构:
struct ip_mreq
{
struct in_addr imr_multiaddr; // d类地址,比如,inet_addr("234.5.6.7")
struct in_addr imr_interface; // 一般用INADDR_ANY
}
setsockopt(s,IPPPROTO_IP,IP_ADD_MEMBERSHIP,(char *) &ipmr,&len);
离开
setsockopt(s,IPPROTO_IP,IP_DROP_MEMBERSHIP,(char*) &ipmr,&len);