vc udp 通信 socket setsockopt 组播广播
多播是有个多播地址 , 是在 224.0.0.0 到 239.255.255.255 之间的 IP 地址 , 但是有一些特殊 ( 保
留 ) 的不能用包括
:
224.0.0.0 基本地址
224.0.0.1 子网上的所有系统
224.0.0.2 子网上的所有路由器
224.0.0.5 子网上所有 OSPF 路由器
224.0.0.6 子网上所有指定的 OSPF 路由器
224.0.0.9 RIP 第 2 版本组地址
224.0.1.1 网络时间协议
224.0.1.24 WINS 服务器组地址
可以说组播是广播的改进 .
下面是用 socket1.1, 用 setsockopt() 函数来加入一个多播组 , 其包括内容
:
1. IP_ADD_MEMBERSHIP: 加入一个多播组
2. IP_DROP_MEMBERSHIP: 离开一个多播组
3. IP_MULTICAST_IF: 指定外出多播数据报的外出接口
4. IP_MULTICAST_TTL: TTL 数
5. IP_MULTICAST_LOOP: 是否禁止回馈,我的理解是一台机器是否可以接收到自己发送
的多播数据报
在接收段只需要加入一个多播组 , 其余的和正常 UDP 一样处理
组播
IP
IP
IP
IP
地址是在
224.0.0.0
224.0.0.0
224.0.0.0
224.0.0.0
到
239.255.255.255
239.255.255.255
239.255.255.255
239.255.255.255
之间 , 接收端
socket
socket
socket
socket
绑定的端口
号应该与 发送端目的地址的端口号一致
接收端
:
#include <WINSOCK2.H>
#include <stdio. h >
#include <Ws2tcpip. h >
#define MCASTADDR "225.0.0.10"
#pragma comment(lib, "ws2_32" )
int
main(void)
{
WSADATA
ws ;
int
ret ;
SOCKET sock ;
SOCKADDR_IN localAddr , remoteAddr ;
int
len = sizeof SOCKADDR;
char recvBuf [100];
ip_mreq mcast ; // 设置多播 ( 组播 )
评论15