UDP组播多播实现步骤
- 格式:pdf
- 大小:34.69 KB
- 文档页数:2
UDP组播多播实现步骤
UDP组播
实现服务器对客户端分组播放(发送数据)。
实现步骤: server.c
1、创建服务器套接字
#include
#include
int socket(int domain, int type, int protocol); 返回套接字
2、构建服务器地址结构
struct sockaddr_in serveraddr;
#include
bzero(&serveraddr, sizeof(serveraddr));
serveraddr.sin_family = AF_INET;
serveraddr.sin_addr.s_addr = htonl(INADDR_ANY); //IP
serveraddr.sin_port = htons(SERVER_PORT);//端⼝
3、绑定地址
int bind(int sockfd, const struct sockaddr *addr,
socklen_t addrlen);
4、构建组播属性结构
struct ip_mreqn group;
#include
inet_pton(AF_INET,GROUP,&group.imr_multiaddr);//设置组播地址
net_pton(AF_INET,"0.0.0.0",&group.imr_address);//设置本地地址
group.imr_ifindex=if_nametoindex("ent0");//设置⽹卡接⼝
5、设置组播权限和属性
setsockopt(sockfd,IPPROTO_IP,IP_MULTICAST_IF,&group,
sizeof(group));//设置组播权限及选项
6、设置客户端组播地址
struct sockaddr_in cliaddr;
bzero(&cliaddr,sizeof(cliaddr));
cliaddr.sin_family=AF_INET;
inet_pton(AF_INET,GROUP,&cliaddr.sin_addr.s_addr);
cliaddr.sin_port=htons(CLIENT_PORT);
7、发送数据
sendto(sockfd,buf,strlen(buf),0,(structsockaddr*)&cliaddr,
sizeof(cliaddr));//往组播地址发送信息,返回数据⼤⼩
client.c1、创建客户端套接字
2、构建客户端地址结构
3、绑定地址
4、构建组播结构
5、设置组播权限和属性
6、接收数据
#include
#include
len=recvfrom(confd,buf,sizeof(buf),0,NULL,0);//接收数据