UDP 組播/多播實現步驟

UDP組播服務器

   實現服務器對客戶端分組播放(發送數據)。dom

實現步驟:socket

  server.cspa

1、建立服務器套接字server

#include <sys/types.h>          接口

#include <sys/socket.h>ip

int socket(int domain, int type, int protocol);   返回套接字string

2、構建服務器地址結構cli

struct sockaddr_in serveraddr;權限

#include <strings.h>

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 <arpa/inet.h>

  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.c

1、建立客戶端套接字

2、構建客戶端地址結構

3、綁定地址

4、構建組播結構

5、設置組播權限和屬性

6、接收數據

  #include <sys/types.h>

   #include <sys/socket.h>

   len=recvfrom(confd,buf,sizeof(buf),0,NULL,0);//接收數據

相關文章
相關標籤/搜索