1.UDP组播是处于广播和单播中间的一种通信方式:与部分主机进行多播通信。UDP组播(多播)可以在局域网或非局域网中通信。
2.UDP组播代码:
服务端代码:
/*UDP组播通信*/
//服务端
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <time.h>
#include <arpa/inet.h>
#include <stdlib.h>
int main()
{
//1.创建套接字
int fd = socket(PF_INET,SOCK_DGRAM,0);
if(fd == -1)
{
perror("socket");
exit(-1);
}
//2.设置组播属性,设置外出即可
struct in_addr imr_multiaddr;
//初始化组播地址
inet_pton(AF_INET,"239.0.0.10",&imr_multiaddr);
setsockopt(fd,IPPROTO_IP,IP_MULTICAST_IF,&imr_multiaddr,sizeof(imr_multiaddr));
//3.初始化客户端的地址信息
struct sockaddr_in cliaddr;
cliaddr.sin_family = AF_INET;
cliaddr.sin_port = htons(9999);
inet_pton(AF_INET,"239.0.0.10",&cliaddr.sin_addr.s_addr);
//4.通信
int num = 0;
while(1)
{
char buf[128];
sprintf(buf,"hello,client ...%d\n",num++);
//发送数据
sendto(fd,buf,strlen(buf) + 1,0,(struct sockaddr*)&cliaddr,sizeof(cliaddr));
printf("组播的数据:%s\n",buf);
sleep(1);
}
close(fd);
return 0;
}
3.运行结果:
4.总结: UDP组播可在局域网中使用,也可以在非局域网中使用。客户端只有加入了多播组之后才能接受到多播的数据。