UDP 組播/多播實現步驟


UDP組播

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

實現步驟:

  server.c

1、創建服務器套接字

#include <sys/types.h>          

#include <sys/socket.h>

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

2、構建服務器地址結構

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);//接收數據

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM