zoukankan      html  css  js  c++  java
  • 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);//接收数据

  • 相关阅读:
    创建型设计模式之-单例
    设计模式(1、创造型2、结构型、3行为型)
    手写IOC容器和两种注入(构造方法注入和属性注入)
    从依赖倒置原则到IOC控制反转
    自定义HttpHandler可以做什么
    一个用户在浏览器上输入网址怎么走到我们写的.net程序中的,请求到管道处理
    代理Nginx
    .Net Expression表达式目录树(自己动态创建表达式目录树)
    canvas绘制圆环进度条
    城市二级联动
  • 原文地址:https://www.cnblogs.com/sjp520/p/5618708.html
Copyright © 2011-2022 走看看