《广播与多播84327.ppt》由会员分享,可在线阅读,更多相关《广播与多播84327.ppt(26页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、广播与多播单播/广播/多播通信n 单播通信:网络中单一的源节点发送封包到单一的目的节点。n 广播通信:将封包从一个节点发送到所有其他节点。n 多播通信:将封包从一个节点发送到其他多个网络节点的集合。广播通信n 广播、多播仅适用于UDP 协议n 广播的负面作用是明显的:多个进程都发送广播数据,网络性能会受到影响。n 几乎所有路由器都不转发广播数据,广播程序仅应用于本地子网。发送广播数据SOCKET s=:socket(AF_INET,SOCK_DGRAM,0);/有效SO_BROADCAST 选项BOOL bBroadcast=TRUE;:setsockopt(s,SOL_SOCKET,SO_B
2、ROADCAST,(char*)&bBroadcast,sizeof(BOOL);/设置广播地址,这里的广播端口号(电台)是4567SOCKADDR_IN bcast;bcast.sin_family=AF_INET;bcast.sin_addr.s_addr=INADDR_BROADCAST;/:inet_addr(255.255.255.255);bcast.sin_port=htons(4567);/发送广播printf(开始向4567 端口发送广播数据.n n);char sz=This is just a test.rn;while(TRUE):sendto(s,sz,strlen(
3、sz),0,(sockaddr*)&bcast,sizeof(bcast);:Sleep(5000);套接字选项n 套接字选项和I/O 控制命令用于改变套接字的默认行为n 主要的函数:getsockopt(SOCKET s,int level,int optname,char*optval,int*optlen);setsockopt(SOCKET s,int level,int optname,char*optval,int optlen);n s:套接字句柄n level:指定选项定义在哪个级别n optname:套接字选项名称n optval:指定一个缓冲区,用于选项的值n optlen
4、:optval 所指缓冲区的大小leveln 网络是分层的,每层上又有多个协议,因此套接字选项有不同的级别n 常见级别:n SOL_SOCKET(对应应用层)n IPPROTO_TCP(对应传输层的TCP协议n IPPROTO_UDP(对应传输层的UDP 协议)n IPPROTO_IP(对应网络层的IP 协议)optnamen 各级别的选项不同,同一级别不同协议的选项也可能不同SOL_SOCKET 级别的选项n SO_BROADCASTBOOL 型 设置套接字传输和接收广播消息。如果给定套接字已进行过设置,则返回TRUE。该选项只对不是SOCKET_STREAM 类型的套接字有效n SO_RE
5、USEADDRBOOL 型 设置为TRUE,套接字可以被绑定到一个已经使用的本地地址。n 不能将两个监听套接字绑定到相同的本地地址IPPROTO_IP 级别的选项n IP_TTL 设置和获取IP 头中的TTL 参数n IP_ADD_MEMBERSHIP 加入多播组n IP_DROP_MEMBERSHIP 离开多播组程序实例n BOOL bBroadcast=TRUE;setsockopt(s,SOL_SOCKET,SO_BROADCAST,(char*)&bBroadcast,sizeof(BOOL);n level:SOL_SOCKETn optname:SO_BROADCASTn optval:TRUE,但需要进行类型转换n optlen:一个bool 值所需要的缓冲区大小广播地址n SOCKADDR_IN bcast;bcast.sin_family=AF_INET;bcast.sin_addr.s_addr=INADDR_BROADCAST;/:inet_addr(255.255.255.255);bcast.sin_port=htons(4567);n INADDR_BROADCAST 此处等价于特殊地址“255.255.255.255”此地址用于对所处网络几乎没有了解的条件下n 一般的广播地址:IP 地址中主机号为全1