视频会议、实时股票报价都应用到组播通讯。多播通信通常用于需要将数据同时发送给多个接收者的场景。
组播,顾名思义,即是组内成员广播。
首先当然是要定义组、加入组的了。
发送的时候,sendto 的地址参数上,就能直接设置组信息。
接受某个组的时候要单独进行设置。
下面2个数据结构与函数完成用于完成该工作。
- struct ip_mreq
setsockopt()
struct ip_mreq 是一个结构体,用于指定多播(Multicast)通信中的多播组IP地址和本地网络接口地址。这个结构体通常与 setsockopt() 函数一起使用,以加入一个多播组。
以下四个步骤完整这个设置。
-
定义
struct ip_mreq结构体:
struct ip_mreq
{
struct in_addr imr_multiaddr; /* 指定多播组IP */
struct in_addr imr_interface; /* 本地网卡地址,通常指定为 INADDR_ANY (0.0.0.0) */
};
它包含两个 struct in_addr 类型的成员:imr_multiaddr 用于存储多播组的IP地址,imr_interface 用于存储本地网络接口的地址。
2、使用前要声明并初始化 struct ip_mreq 变量:
struct ip_mreq mreq;
bzero(&mreq, sizeof(mreq));
使用 bzero() 函数将其内存区域清零。bzero() 函数将指定大小的内存区域设置为零,这里的大小是 sizeof(mreq),即 struct ip_mreq 结构体的大小。
3、设置多播组地址和本地网络接口地址:
mreq.imr_multiaddr.s_addr = inet_ad

最低0.47元/天 解锁文章
8204

被折叠的 条评论
为什么被折叠?



