前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >第21章 多播

第21章 多播

作者头像
_gongluck
发布2018-03-09 15:39:26
1.1K0
发布2018-03-09 15:39:26
举报
文章被收录于专栏:转载gongluck的CSDN博客

1·多播(组播)地址:224.0.0.0~139.255.255.255

2·发送多播数据报无需任何特殊处理,发送应用程序不必为此加入多播组

3·多播相对于广播的优势在于不会对多播分组不感兴趣的主机增加额外负担

代码语言:javascript
复制
#include "../Gnet.h"

int main(int argc, const char* argv[])
{
    int sendfd, recvfd;
    const int on = 1;
    //const int off = 0;
    struct sockaddr_in sockaddr;
    socklen_t addrlen;
    struct ip_mreq mreq;
    int nrecv;
    char buf[MAX_LINE];
    char addrstr[INET_ADDRSTRLEN];

    if(argc != 2)
        perr_exit("usage: mcast <IP-multicast-address>");

    sendfd = Socket(AF_INET, SOCK_DGRAM, 0);
    recvfd = Socket(AF_INET, SOCK_DGRAM, 0);

    if(setsockopt(recvfd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)) < 0)
        perr_exit("setsockopt error. 22");

    sockaddr.sin_family = AF_INET;
    //sockaddr.sin_port = htons(SERVER_PORT);
    if(inet_pton(AF_INET, argv[1], &sockaddr.sin_addr) < 0)
        perr_exit("inet_pton error.27");
    addrlen = sizeof(sockaddr);
    Bind(recvfd, (struct sockaddr*)&sockaddr, addrlen);//接收套接字绑定多播地址

    mreq.imr_multiaddr = sockaddr.sin_addr;
    //inet_pton(AF_INET, "192.168.17.129", &mreq.imr_interface.s_addr);
    mreq.imr_interface.s_addr = htonl(INADDR_ANY);

    if(setsockopt(recvfd, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mreq, sizeof(mreq)) <0)//接收套接字加入多播组
        perr_exit("setsockopt error.35");
    //setsockopt(sendfd, IPPROTO_IP, IP_MULTICAST_LOOP, &off, sizeof(off));
    if(fork() > 0)
    {
        while(1)
        {
            nrecv = recvfrom(recvfd, buf, MAX_LINE, 0, (struct sockaddr*)&sockaddr, &addrlen); 
            printf("from %s: %s\n", 
                   inet_ntop(AF_INET, &sockaddr, addrstr, sizeof(addrstr)), buf);
        }
    }
    else
    {
        while(1)
        {
            sendto(sendfd, "test data", strlen("test data")+1, 0, (struct sockaddr*)&sockaddr, addrlen);
            sleep(2);
        }
    }

    return 0;
}

github:https://github.com/gongluck/unp-notes

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017年11月17日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档