2006-12-2 10:49
wanghun
请教:关于组播编程
[size=13px]我的操作系统:redhat9.0
内核版本:2.4.20-8
请问以下程序是真正意义上的组播吗?底层用的是IGMP协议么?
我的组播程序如下(简化版):
send_sockfd=socket(AF_INET,SOCK_DGRAM,0); //创建udp套接字
bzero(&mcast_addr,sizeof(struct sockaddr_in)); //清空地址结构,初始化
mcast_addr.sin_family=AF_INET; //设置地址簇
inet_pton(AF_INET, "234.1.1.13", &mcast_addr.sin_addr); //设置组播地址
mcast_addr.sin_port=htons(1234); //设置组播端口
//设置套接口为组播套接口
setsockopt(send_sockfd, IPPROTO_IP,IP_MULTICAST_LOOP,(u_char*)0,sizeof(u_char));
//组播发送数据
sendto( send_sockfd, buf, bufSize, 0, (struct sockaddr *)&mcast_addr, sizeof(struct sockaddr)));
另:rh9支持PIM-SM协议吗? 如何对其编程,谢谢![/size]
2006-12-11 08:51
wanghun
谢谢回复。
linux内核选项中有IGMP v1, IGMP v2, PIM-SM等祖播协议可以选择,默认安装时,
内核配置项这些协议都是Y,也就是说内核都支持这些协议,
但是在上层使用组播API编写程序,如何能知道执行你的程序的时候,
系统使用的是哪个协议阿?谢谢