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

  • 相关阅读:
    java继承
    java构造器
    java接口
    java 泛型详解---转载
    java竞争抢答器
    java并发资源访问_01
    java多线程数字加减
    java多线程计算机流水线模型
    Java并发编程:Callable、Future和FutureTask---转载测试
    购物车
  • 原文地址:https://www.cnblogs.com/sjp520/p/5618708.html
Copyright © 2020-2023  润新知