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);//接收数据