11.3.5 一个多播例子的服务器端

11.3.5  一个多播例子的服务器端

下面是一个多播服务器的例子。多播服务器的程序设计很简单,建立一个数据包套接字,选定多播的IP地址和端口,直接向此多播地址发送数据就可以了。多播服务器的程序设计,不需要服务器加入多播组,可以直接向某个多播组发送数据。

下面的例子持续向多播IP地址"224.0.0.88"8888端口发送数据"BROADCAST TEST DATA",每发送一次间隔5s

 

/*

*broadcast_server.c - 多播服务程序

*/

#define MCAST_PORT 8888;

#define MCAST_ADDR "224.0.0.88"/    /*一个局部连接多播地址,路由器不进行转发*/

#define MCAST_DATA "BROADCAST TEST DATA"            /*多播发送的数据*

#define MCAST_INTERVAL 5                            /*发送间隔时间*/

int main(int argc, char*argv)

{

    int s;

    struct sockaddr_in mcast_addr;     

    s = socket(AF_INET, SOCK_DGRAM, 0);         /*建立套接字*/

    if (s == -1)

    {

        perror("socket()");

        return -1;

    }

   

    memset(&mcast_addr, 0, sizeof(mcast_addr));/*初始化IP多播地址为0*/

    mcast_addr.sin_family = AF_INET;                /*设置协议族类行为AF*/

    mcast_addr.sin_addr.s_addr = inet_addr(MCAST_ADDR);/*设置多播IP地址*/

    mcast_addr.sin_port = htons(MCAST_PORT);        /*设置多播端口*/

   

                                                    /*向多播地址发送数据*/

    while(1) {

        int n = sendto(s,                           /*套接字描述符*/

                                    MCAST_DATA,     /*数据*/

                                    sizeof(MCAST_DATA),    /*长度*/

                                    0,

                                    (struct sockaddr*)&mcast_addr,

                                    sizeof(mcast_addr)) ;

        if( n < 0)

        {

            perror("sendto()");

            return -2;

        }      

       

        sleep(MCAST_INTERVAL);                          /*等待一段时间*/

    }

   

    return 0

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值