fc版地底探险第一关门:关于组播,和广播的问题!

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/30 11:10:29
如果我的程序是运作在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);