精华内容
下载资源
问答
  • windows 开启组播协议
    2021-08-07 03:04:49

    Windows 2003组播配置方案

    测试方案

    测试项目:

    组播功效

    测试子项目:

    Ip igmp snooping

    测试原理以及目的阐发:

    测试在默认vlan 1,没有vlan断绝,上联口是untag方法时igmp snooping组播根本功效。

    测试连接图:

    预置条件:

    Router :

    ip routing;

    ip multicast-routing;

    Ethernet 0/0: ip pim sparse-mode;

    ip address:.1/8;

    No shutdown。

    Ethernet 1/0: ip pim sparse-mode;

    Ip address

    No shutdown。

    Switch :

    封闭生成树,环路检测,风暴抑制,rndp;

    启动全局ip igmp snooping功效;

    组播办事器:

    Ip address:.2/8,gateway:1.1.1.1;

    同时播放2个组播流,组地点分别为:224.2.136.1,224.2.136.2。

    确认每个视频文件传输速率。

    客户机:

    Pc1:

    Pc2:

    Pc3:

    测试历程:

    预期结果:

    不进行点播:

    3台客户机都不点播任何视频文件,不进行任何操纵,检察互换机2,3,4端口active灯的闪的状态,客户机吸收到的数据包情况。

    客户机连接的接口的active灯隔断很长时间闪频频,抓包:可能会有igmp协商协议数据包,路由器发出的包,客户机的arp请求,名解析请求等,但是没有组播流。

    Pc1点播:

    Pc1组播224.2.136.1地点的视频步伐,检察所有link端口,是否只有Pc1连接的端口的active灯快速闪烁;

    检察客户机Pc1点播视频的速率是否与组播源播放速率相同。

    Pc 1可以组播224.2.136.1地点的乐成,只有2端口快速闪烁;3,4端口抓包:没有组播数据流流入;

    客户机点播视频的平均速率与组播源播放速率根本相同。

    Pc2点播:

    Pc1正在点播时,Pc2再点播224.2.136.1地点的视频步伐,检察是否只有2,3端口端口active快速闪烁,并检察4端口是否有组播流;

    检察客户机Pc1和Pc2点播视频的速率是否与组播源播放速率相同。

    Pc 1和Pc 2可以点播224.2.136.1地点的乐成,只有2,3端口快速闪烁; 4端口抓包:没有组播流流入;

    客户机Pc 1和Pc 2点播视频的平均速率都与组播源播放速率根本相同。

    测试说明:

    Windows2003 Server 组播办事器的配置

    根本步调如下:

    配置internet信息办事器(IIS)

    配置多播路由

    配置windows媒体治理器

    注:如果有路由器提供三层组播功效,则不需要在组播源配置组播路由。

    安装操纵

    查抄是否安装了IIS和Windows Mdeia Services

    开始-〉步伐-〉治理东西-〉Internet信息办事(IIS)治理器

    如果能够正常的运行Internet信息办事,则说明internet信息办事器(IIS)已经安装;

    如果能够正常的运行Windows Mdeia Services,则说明Windows Mdeia Services已经安装;

    如果不能够正常的运行或没有该步伐,请执行下面的步调。

    安装IIS和Windows Mdeia Services

    开始-〉步伐-〉控制面板-〉添加和删除步伐-〉添加/删除Windows组件-〉应用步伐办事器-〉Internet信息办事(IIS)

    选中Internet信息办事治理器和万维网办事,如图1所示:

    图1

    开始-〉步伐-〉控制面板-〉添加和删除步伐-〉添加/删除Windows组件

    选中Windows Mdeia Services,如图2所示:

    图2

    点击下一步,完成安装就可以了。

    创建一个的web站点

    配置步调:

    首先,在当地硬盘,最好是系统安装盘符下创建一个目录,名称例如:igmp2003。

    接着,打开“网站”,右键,选择“新建”-〉“网站”

    单击“下一步”,在站点说明处输入“igmp2003”,如图1所示:

    图3

    然后指定本网站的IP地点,如图4所示:

    图4

    指定网站的主目录,指向前面已经在当地创建的igmp2003的目录,如图5所示:

    图5

    在网络访问权限里选择:读取,运行脚本,浏览权限,如图6所示:

    图6

    最后点下一步,完成绩可以了。

    IGMP路由配置

    打开路由和远程访问办事,打开开始->步伐->治理东西->远程访问办事,,如果是第一次使用,则该办事默认是禁用的。点办事器名->右键->配置并启用路由和远程访问,选择自界说配置,如图7所示:

    图7

    选择LAN路由,如图8所示:

    图8

    然后下一步,完成,确认“开始办事“就可以了,这个办事就启

    更多相关内容
  • windows下UDP组播

    万次阅读 2018-08-12 18:19:57
    最近研究下UDP组播,首先上网看看各种组播的含义,以下是总结的:  多播,也称为“组播”,将网络中同一业务类型主机进行了逻辑上的分组,进行数据收发的时候其数据仅仅在同一分组中进行,其他的主机没有加入此...

    最近研究下UDP组播,首先上网看看各种组播的含义,以下是总结的:

        多播,也称为“组播”,将网络中同一业务类型主机进行了逻辑上的分组,进行数据收发的时候其数据仅仅在同一分组中进行,其他的主机没有加入此分组不能收发对应的数据。

        在广域网上广播的时候,其中的交换机和路由器只向需要获取数据的主机复制并转发数据。主机可以向路由器请求加入或退出某个组,网络中的路由器和交换机有选择地复制并传输数据,将数据仅仅传输给组内的主机。多播的这种功能,可以一次将数据发送到多个主机,又能保证不影响其他不需要(未加入组)的主机的其他通 信。

    多播的地址是特定的,D类地址用于多播。D类IP地址就是多播IP地址,即224.0.0.0至239.255.255.255之间的IP地址,并被划分为局部连接多播地址、预留多播地址和管理权限多播地址3类:

      1、局部多播地址:在224.0.0.0~224.0.0.255之间,这是为路由协议和其他用途保留的地址,路由器并不转发属于此范围的IP包。

      2、预留多播地址:在224.0.1.0~238.255.255.255之间,可用于全球范围(如Internet)或网络协议。

      3、管理权限多播地址:在239.0.0.0~239.255.255.255之间,可供组织内部使用,类似于私有IP地址,不能用于Internet,可限制多播范围。

      多播的程序设计使用setsockopt()函数和getsockopt()函数来实现,组播的选项是IP层的,其选项值和含义参见下表。

                             

    getsockopt()/setsockopt()的选项

    含 义

    IP_MULTICAST_TTL

    设置多播组数据的TTL值

    IP_ADD_MEMBERSHIP

    在指定接口上加入组播组

    IP_DROP_MEMBERSHIP

    退出组播组

    IP_MULTICAST_IF

    获取默认接口或设置接口

    IP_MULTICAST_LOOP

    禁止组播数据回送

    下面是写的实例代码:

    client代码

    #include <stdio.h>  
    #include <winsock2.h>  
    #include <ws2tcpip.h>  
    #pragma comment(lib, "ws2_32.lib")
    
    int main()
    {
    	int iRet = 0;
    	WSADATA wsaData;
    	WSAStartup(MAKEWORD(2, 2), &wsaData);
    
    	SOCKET sock = socket(AF_INET,SOCK_DGRAM,0);
    
    	int iFlag = 0;	// 0-同一台主机 1-夸主机
    	iRet = setsockopt(sock, IPPROTO_IP, IP_MULTICAST_TTL, (char*)&iFlag, sizeof(iFlag));
    	if(iRet != 0){
    		printf("setsockopt fail:%d", WSAGetLastError());
    		return -1;
    	}
    
    	sockaddr_in addr;
    	addr.sin_addr.S_un.S_addr = inet_addr("234.2.2.2");
    	addr.sin_family = AF_INET;
    	addr.sin_port = htons(9411);
    	
    	char strSend[1024] = {0};
    	static int iIdx = 0;
    	while(1)  
    	{     
    		sprintf_s(strSend, "udp send group data:%d", iIdx++);
    		iRet = sendto(sock, strSend, strlen(strSend) + 1, 0, (sockaddr*)&addr, sizeof(sockaddr));
    		if(iRet <= 0){
    			printf("send fail:%d", WSAGetLastError());
    		}else{
    			printf("send data:%s\n", strSend);
    		}
    		Sleep(500); 
    	}  
    
    	closesocket(sock);
    	WSACleanup();
    
    	return 0;
    }

    server代码:

    #include <stdio.h>  
    #include <winsock2.h>  
    #include <ws2tcpip.h>  
    #pragma comment(lib, "ws2_32.lib")
    
    int main()
    {
    	int iRet = 0;
    	WSADATA wsaData;
    	WSAStartup(MAKEWORD(2, 2), &wsaData);
    
    	SOCKET sock = socket(AF_INET, SOCK_DGRAM, 0);
    
    	sockaddr_in addr;
    	addr.sin_family = AF_INET;
    	//addr.sin_addr.S_un.S_addr = INADDR_ANY;
    	addr.sin_addr.S_un.S_addr = inet_addr("192.168.0.104");
    	addr.sin_port = htons(9411);
    
     	bool bOptval = true;
     	iRet = setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (char*)&bOptval, sizeof(bOptval));
     	if(iRet != 0){
     		printf("setsockopt fail:%d", WSAGetLastError());
     		return -1;
     	}
    
    	iRet = bind(sock, (sockaddr*)&addr, sizeof(addr));
    	if(iRet != 0){
    		printf("bind fail:%d", WSAGetLastError());
    		return -1;
    	}
    	printf("socket:%d bind success\n", sock);
    
    	// 加入组播  
    	ip_mreq multiCast;
    	//multiCast.imr_interface.S_un.S_addr = INADDR_ANY;
    	multiCast.imr_interface.S_un.S_addr = inet_addr("192.168.0.104");
    	multiCast.imr_multiaddr.S_un.S_addr = inet_addr("234.2.2.2");
    	iRet = setsockopt(sock, IPPROTO_IP, IP_ADD_MEMBERSHIP, (char*)&multiCast, sizeof(multiCast));
    	if(iRet != 0){
    		printf("setsockopt fail:%d", WSAGetLastError());
    		return -1;
    	}
    
    	printf("udp group start\n");
    
    	int len = sizeof(sockaddr);
    	char strRecv[1024] = {0};
    	while(true)  
    	{     
    		memset(strRecv, 0, sizeof(strRecv));
    		iRet = recvfrom(sock, strRecv, sizeof(strRecv) - 1, 0, (sockaddr*)&addr, &len);
    		if(iRet <= 0){
    			printf("recvfrom fail:%d", WSAGetLastError());
    			return -1;
    		}
    		printf("recv data:%s\n", strRecv);
    	}  
    
    	closesocket(sock);
    	WSACleanup();
    
    	return 0;
    }
    

     

     

    展开全文
  • Windows多网卡环境接收组播

    千次阅读 2020-05-07 15:08:09
    title: “Windows多网卡环境接收组播包” subtitle: “跨过千山万水,踏遍海角天涯–I got it!” date: “2018-01-14” author: “cj” tags: multicast windows multiple-interfaces c++ 说明:本文仅针对IPv4 ...

    layout: post
    title: “Windows多网卡环境接收组播包”
    subtitle: “跨过千山万水,踏遍海角天涯–I got it!”
    date: “2018-01-14”
    author: “cj”
    tags:
    multicast
    windows
    multiple-interfaces
    c++

    说明:本文仅针对IPv4

    局域网发现技术有很多,常用组播(或称为多播):一台设备发送组播包,其他设备加入组播组,接收到组播包时即可知晓发送端IP,接收端回应约定数据即可让发送端也得知这些接收端的IP。

    组播地址与端口号

    IPv4的D类地址(224.0.0.0至239.255.255.255)是IPv4多播地址。D类地址的低28位构成多播组ID(group ID),整个32位地址则成为组地址(group address)。

    224.0.0.1为all-hosts组,224.0.0.2是all-routers组。
    224.0.0.0~224.0.0.255之间的地址(224.0.0.0/24)称为链路局部(link-local)多播地址,是为低级拓扑发现和维护协议保留。

    一般应用程序使用239.0.0.0~239.255.255.255之间的地址,称作可管理地划分范围的IPv4多播空间(administratively scoped IPv4 multicast space)(RFC2365)。

    本文使用239.254.43.21:45454作为组播地址和端口号

    static const auto MULTICAST_GROUP_ADDRESS = "239.255.43.21";
    static const unsigned short MULTICAST_GROUP_PORT = 45454;
    static const auto LOCAL_IP = "192.168.1.222";
    

    WinSock2编程须知

    winsock.h与winsock2.h的一些宏定义如IP_ADD_MEMBERSHIP使用了不同的值,因此须特别注意。这破问题我是在join gruop(setsockopt(sockfd, IPPROTO_IP, IP_ADD_MEMBERSHIP...))始终失败,后来检查错误码为10042 (WSAENOPROTOOPT),搜索得知不可直接#include <windows.h>, 而需要

    #include <WinSock2.h>
    #include <Ws2tcpip.h>
    #include <stdio.h>
    #pragma comment(lib, "ws2_32.lib")
    

    具体可参考INFO: Header and Library Requirement When Set/Get Socket Options at the IPPROTO_IP Level

    发送端

    单网卡环境

    无需多提,仅需创建UDP socket,将数据报发送至D类地址的某个约定好的端口即可。

    struct sockaddr_in addr = {};
    addr.sin_family = AF_INET;
    addr.sin_port = htons(MULTICAST_GROUP_PORT);
    addr.sin_addr.s_addr = inet_addr(MULTICAST_GROUP_ADDRESS);
    int addr_len = sizeof(addr);
    
    char host[1024] = { 0 };
    gethostname(host, 1024);
    
    int msgNo = 0;
    char msg[1024] = { 0 };
    while (true) {
        sprintf(msg, "Groupcast Message %s No.%d", host, msgNo++);
        int ret = sendto(sockfd, msg, strlen(msg), 0, (struct sockaddr*)&addr, addr_len);
        if (ret < 0) {
            perror("sendto");
            return -1;
        } else {
            printf("Sent msg: %s\n", msg);
        }
        Sleep(1000);
    }
    

    多网卡环境

    必须绑定并设置出口网卡,否则会使用系统网卡列表的第一个,有可能不是与其他设备同一个局域网的网卡。

    int sockfd = socket(AF_INET, SOCK_DGRAM, 0);
    if (-1 == sockfd) {
        printf("socket error!!!\n");
        perror("socket:");
        return -1;
    }
    
    int reuse = 1;
    if (setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, (const char *)&reuse, sizeof(reuse)) < 0) {
        perror("Setting SO_REUSEADDR error");
        closesocket(sockfd);
        return -1;
    }
    
    struct sockaddr_in addr = {};
    addr.sin_family = AF_INET;
    addr.sin_port = htons(MULTICAST_GROUP_PORT);
    addr.sin_addr.s_addr = INADDR_ANY;
    int addr_len = sizeof(addr);
    int ret = bind(sockfd, (struct sockaddr*)&addr, sizeof(struct sockaddr));
    if (-1 == ret) {
        printf("bind localaddr error!!!\n");
        perror("bind:");
        closesocket(sockfd);
        return -1;
    }
    
    unsigned long if_addr = inet_addr(LOCAL_IP);
    ret = setsockopt(sockfd, IPPROTO_IP, IP_MULTICAST_IF, (const char*)&if_addr, sizeof(if_addr));
    if (-1 == ret) {
        printf("IP_MULTICAST_IF error!!!\n");
        perror("setsockopt:");
        closesocket(sockfd);
        return -1;
    }
    
    char host[1024] = { 0 };
    gethostname(host, 1024);
    
    int msgNo = 0;
    char msg[1024] = { 0 };
    addr.sin_addr.s_addr = inet_addr(MULTICAST_GROUP_ADDRESS);
    while (true) {
        sprintf(msg, "Groupcast Message %s No.%d", host, msgNo++);
        int ret = sendto(sockfd, msg, strlen(msg), 0, (struct sockaddr*)&addr, addr_len);
        if (ret < 0) {
            perror("sendto");
            return -1;
        } else {
            printf("Sent msg: %s\n", msg);
        }
        Sleep(1000);
    }
    

    接收端

    单网卡环境

    非常简单,网上的demo也大多针对这种情况。
    创建UDP socket,绑定INADDR_ANY、约定的端口,加入组播组,接收即可。

    int ret = 0;
    
    int sockfd = socket(AF_INET, SOCK_DGRAM, 0);
    if (-1 == sockfd) {
        printf("socket error!!!\n");
        perror("socket:");
        return -1;
    }
    
    int reuse = 1;
    if (setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, (const char *)&reuse, sizeof(reuse)) < 0) {
        perror("Setting SO_REUSEADDR error");
        closesocket(sockfd);
        return -1;
    }
    
    struct sockaddr_in localaddr = { 0 };
    localaddr.sin_family = AF_INET;
    localaddr.sin_port = htons(MULTICAST_GROUP_PORT);
    localaddr.sin_addr.s_addr = /*inet_addr(LOCAL_IP)*/ htonl(INADDR_ANY);
    ret = bind(sockfd, (struct sockaddr*)&localaddr, sizeof(struct sockaddr));
    if (-1 == ret) {
        printf("bind localaddr error!!!\n");
        perror("bind:");
        closesocket(sockfd);
        return -1;
    }
    
    /*设置是否支持本地回环接收*/
    /*int loopBack = 1;
    ret = setsockopt(sockfd, IPPROTO_IP, IP_MULTICAST_LOOP, (const char *)&loopBack, sizeof(loopBack));
    if (-1 == ret) {
    printf("setsockopt broadcaset error!!!\n");
    perror("setsockopt:");
    closesocket(sockfd);
    return -1;
    }*/
    
    struct ip_mreq ipmr = { 0 };
    ipmr.imr_interface.s_addr = /*inet_addr(LOCAL_IP)*/ (INADDR_ANY);
    ipmr.imr_multiaddr.s_addr = inet_addr(MULTICAST_GROUP_ADDRESS);
    int len = sizeof(ipmr);
    ret = setsockopt(sockfd, IPPROTO_IP, IP_ADD_MEMBERSHIP, (char*)&ipmr, len);
    if (-1 == ret) {
        printf("set error IP_ADD_MEMBERSHIP %d\n", WSAGetLastError());
        perror("setsockopt:");
        closesocket(sockfd);
        return -1;
    }
    
    /* now just enter a read-print loop */
    char msgbuf[MSGBUFSIZE];
    int nbytes = 0;
    localaddr.sin_addr.s_addr = inet_addr(MULTICAST_GROUP_ADDRESS);
    while (1) {
        int addrlen = sizeof(localaddr);
        if ((nbytes = recvfrom(sockfd, msgbuf, MSGBUFSIZE, 0, (struct sockaddr *) &localaddr, &addrlen)) < 0) {
            perror("recvfrom");
            return -1;
        }
        msgbuf[nbytes] = 0;
        puts(msgbuf);
    }
    
    

    多网卡环境

    有些不同,加入组播组时若依然使用INADDR_ANY,则内核默认使用网络设备列表的第一个设备,有可能并不是该局域网。因此,需要将INADDR_ANY替换为LOCAL_IP,即本设备与其他互相发现的设备所在局域网的网卡IP。

    ipmr.imr_interface.s_addr = inet_addr(LOCAL_IP);
    

    备注

    以上所有源码可在https://github.com/captainwong/mcast获取。

    Reference

    展开全文
  • UDP 组播/多播 C语言实现

    千次阅读 2021-04-22 20:05:29
    目录 逻辑设计: 代码实现 运行结果 ... 运行服务器端程序,打开客户端向组播地址端口发送数据,此时服务器端将收到的数据发回客户端完成一次数据收发。 setsockopt 函数介绍见:https://blog.csdn.n.

    目录

    逻辑设计:

    代码实现

    运行结果

    224.100.200.1 多播组

    224.100.200.52 多播组


    思路:

    • PC作为客户机,使用网络调试助手;
    • LS开发板作为服务器端,部署对应程序(代码实现如下);
    • 在UDP基本简单通信的基础上增加两组组播(setsockopt实现,一组也可以),实现组播通信;
    • 运行服务器端程序,打开客户端向组播地址端口发送数据,此时服务器端将收到的数据发回客户端完成一次数据收发。
    • setsockopt 函数介绍见:setsockopt 函数使用及选项介绍_动感超人_Crush-CSDN博客_setsockopt函数

    逻辑设计: 

    服务器端 程序逻辑设计

    代码实现:

    #include <stdio.h>
    #include <sys/socket.h>
    
    #define __PORT_SERVER 8101                                              /* 服务器端口号                 */
    #define GROUP_ADDR_01 "224.100.200.1"                                   /* 组播端口号 1                 */
    #define GROUP_ADDR_52 "224.100.200.52"                                  /* 组播端口号 2                 */
    
    
    int main (int argc, char **argv)
    {
        int iRet = -1;                                                      /* 操作结果返回值               */
        int sockFd = -1;                                                    /* socket 描述符                */
        struct sockaddr_in sockaddrinRemote;                                /* 远端地址                     */
        struct sockaddr_in sockaddrinLocal;
        struct ip_mreq mreq;
        socklen_t uiAddrLen = sizeof(struct sockaddr_in);
        char cRecvBuff[257] ={0};
        register ssize_t sstRecv = 0;                                       /* 接收到的数据长度             */
    
        /*
         * 创建 socket 连接
         */
        sockFd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
        if (sockFd < 0) {
            fprintf(stderr, "create socket error.\n");
            return (-1);
        }
    
        /*
         * 增加地址复用
         */
        iRet = setsockopt(sockFd, SOL_SOCKET, SO_REUSEADDR, &iRet, sizeof(iRet));
        if (iRet < 0) {
            fprintf(stderr, "setsockopt SO_REUSEADDR error.\n");
            return (-1);
        }
    
        /*
         * 初始化本地地址信息
         */
        memset(&sockaddrinLocal, 0, sizeof(sockaddrinRemote));              /* 清空地址信息                 */
        sockaddrinLocal.sin_len = sizeof(struct sockaddr_in);               /* 地址结构大小                 */
        sockaddrinLocal.sin_family = AF_INET;                               /* 地址族                       */
        sockaddrinLocal.sin_port = htons(__PORT_SERVER);                    /* 绑定服务器端口               */
        sockaddrinLocal.sin_addr.s_addr  = INADDR_ANY;
    
        /*
         * 绑定本地地址与端口
         */
        iRet = bind(sockFd, (struct sockaddr *)&sockaddrinLocal, sizeof(sockaddrinLocal));
        if (iRet < 0) {                                                     /* 绑定操作失败                 */
            close(sockFd);                                                  /* 关闭已经创建的 socket        */
            fprintf(stderr, "UDP echo server bind error.\n");
            return (-1);                                                    /* 错误返回                     */
        }
    
        /*
         * 多播结构体初始化
         */
        mreq.imr_multiaddr.s_addr = inet_addr(GROUP_ADDR_01);               /* 多播组的IP地址               */
        mreq.imr_interface.s_addr = htonl(INADDR_ANY);                      /* 加入的客服端主机IP地址       */
        if (setsockopt(sockFd, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mreq, sizeof(mreq)) == -1)    {
            perror("setsockopt");
            exit(-1);
        }
    
        mreq.imr_multiaddr.s_addr = inet_addr(GROUP_ADDR_52);               /* 多播组的IP地址               */
        if (setsockopt(sockFd, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mreq, sizeof(mreq)) == -1)    {
            perror("setsockopt");
            exit(-1);
        }
    
        while(1)
        {
            memset(cRecvBuff, 0, sizeof(cRecvBuff));
            /*
             * 从远端接收数据
             */
            sstRecv = recvfrom(sockFd, (void *)&cRecvBuff[0], 257, 0, (struct sockaddr *)&sockaddrinRemote,&uiAddrLen);
            if (sstRecv <= 0) {                                             /* 接收数据失败                 */
                if ((errno != ETIMEDOUT ) && (errno != EWOULDBLOCK)) {      /* 非超时与非阻塞               */
                    close(sockFd);                                          /* 关闭已经创建的 socket        */
                    fprintf(stderr, "UDP echo server recvfrom error.\n");
                    return (-1);
                }
                continue;
            }
    
            sendto(sockFd, (const void *)&cRecvBuff[0], sstRecv, 0, (const struct sockaddr *)&sockaddrinRemote, uiAddrLen);
        }
    
        /*
         * 多播关闭
         */
        setsockopt(sockFd, IPPROTO_IP, IP_DROP_MEMBERSHIP,&mreq, sizeof(mreq));
    
        return  (0);
    }
    

    运行结果:

    224.100.200.1 多播组:

    224.100.200.1 多播组

    224.100.200.52 多播组:

    224.100.200.52 多播组

    展开全文
  • 使用方法: 1、将你的电脑通过有线直接连接到光猫的LAN1口。...Windows 10l默认是不开启telnet和tftp服务的。需要打开这个功能。 打开以后,在C:\Windows\System32下面就多了telnet.exe和TFTP.EXE两个程序。
  • windows系统实现组播

    千次阅读 2012-05-02 23:48:08
    在使用传输控制协议/Internet 协议 (TCP/IP) 且基于 Windows 的计算机上,Windows 会检测网络媒体是否处于“链接状态”。只要 Windows 检测到媒体处于“故障”状态,它就会从该适配器中删除绑定的协议,直到检测到该...
  • linux接收不到组播信息,已经修改了内核参数的filter,内核参数修改如下:...
  • 协议 端口 说明 echo tcp/udp 7 echo服务 discard tcp/udp 9 用于连接测试的空服务 systat tcp/udp 11 链接端口系统状态 daytime tcp/udp 13 给请求主机发送时间 qotd tcp/udp 17 给请求主机发送格言 ...
  • RTP为半应用层,半传输层协议,可以使用tcp,也可以使用udp,组播为D类地址,为何要使用组播组播对什么有效,如224.3.4.5,端口选择一个9200,组播的好处是: 1 由交换机和路由器来确定发包 2 不用服务器转发 3 在...
  • 第一,绝对不意气用事; 第二,绝对不放过任何一个注释; 第三,绝对保证代码的简洁明了。...在同一系统下,同一时间可打开多个UDP组播窗口,绑定同一个端口号进行通信; 数据接收功能; 数据发送功能。
  • SMB是一个网络文件共享协议,它允许应用程序和终端用户从远端的文件服务器访问文件资源。简单来讲,就是你电视盒子中的KODi播放器可以利用SMB协议播放同在一个路由器内的NAS、电脑硬盘或带路由器硬盘中的视频、音乐...
  • Windows上使用zeromq实现epgm组播

    千次阅读 2019-06-28 23:48:15
    1.编译zeromq, 默认不启动PGM协议, 编译前需要在属性中打开PGM支持, 打开后需要提供openPgm的库和头文件 2.服务器端代码 1 #include "stdafx.h" 2 #include "zmq.h" 3 4 5 6 int _tmain(int argc,...
  • 首先介绍组播协议,组播地址,然后对组播源,交换机和终端在组播环境中的功能进行介绍,最后给出一个实际的局域网组播环境。组播协议 - IGMP下图所示是IGMP v2协议的数据包格式。其中Type的取...
  • mDNS(参见RFC 6762)是一种用于本地主机名查询的方式,通过组播地址224.0.0.251(或ff02::fb)上的UDP端口5353运行。当需要解析.local结尾的主机名时,应当通过mDNS协议进行解析。mDNS的工作方式与普通DNS类似,但其不...
  • 为满足内网无纸化/电子教室等内网超低延迟需求,避免让用户配置单独的服务器...Windows/Android/iOS内置轻量级RTSP服务SDK功能说明 [基础功能]支持Windows/Android/iOS平台RTMP直播SDK除推送RTMP外的所有常规功能;...
  • 使用方法: 1、将你的电脑通过有线直接连接到光猫的LAN1口。...Windows 10l默认是不开启telnet和tftp服务的。需要打开这个功能。 打开以后,在C:\Windows\System32下面就多了telnet.exe和TFTP.EXE两个程序。
  • 为什么要安装可靠多播协议?  答:随着因特网的发展,出现了视频点播、电视会议、远程学习、计算机协同工作等新业务。传统的点到点通信方式,不仅浪费大量的网络带宽,而且效率很低。一种有效利用现有带宽的技术...
  • 项目需求需要在windows2008 r2的环境上搭建虚拟机...组播是基于IP/TCP协议簇下的多播协议(Internet组管理协议),也叫IGMP协议。组播程序的代码与UDP网络编程的代码有些许变化。 Windows接收端代码 #define _WIN...
  • UDP组播配置

    千次阅读 2020-01-04 17:44:27
    在win环境下配置UDP组播发送和接收,解决无法接收和发送组播信息的问题。
  • 组播地址为:udp://239.254.33.34:3334 gst-launch-1.0 -vv udpsrc uri=udp://239.254.33.34:3334 caps="video/mpegts" ! queue2 use-buffering=true max-size-buffers=1000 ! tsparse ! decodebin ! videoconvert...
  • 3、安装并打开可靠多播协议 做法 =》网络连接 ==》(选择你所连接的网络,比如我的是WLAN)属性==》安装 ==》协议; 4、关闭虚拟网卡 此电脑(右键)==》管理 ==》设备管理器 ==》查看(显示隐藏的设备)==》然后...
  • CCIE知识点总结——组播

    千次阅读 2018-05-14 23:28:51
    CCIE专题之组播
  • 局域网内组播接收失败

    千次阅读 2019-01-07 14:58:41
    最近进行组播通信时,由于接收组播的服务部署在windows,linux(ubuntu,mac)等环境下。windows环境下。出现windows下的服务接收不到...3.开启组播协议 eth0 Link encap:以太网 硬件地址 b0:83:fe:50:64:b8 inet 地...
  • windows网络编程之组播

    千次阅读 2016-10-31 09:28:35
     一个应用程序可以通过打开SO_KEEPALIVE选项,使得WINDOWS套接口实现在TCP连接情况下允许使用“保持活动”包。一个WINDOWS套 接口实现并不是必需支持“保持活动”,但是如果支持的话,具体的语义将与实现有关,应...
  • VLC推流(组播/单播)测试

    千次阅读 2020-08-27 16:22:24
    组播地址使用范围规定 组播报文的目的地址使用 d 类 ip 地址, 范围是从 224.0.0.0 到 239.255.255.255。d 类地址不能出现在 ip 报文的源 ip 地址字段。 224.0.0.0~224.0.0.255 为预留的组播地址(永久组地址) ...
  • 网络-单播、多播(组播)和广播的区别 转载声明 本文大量内容系转载自以下文章,有删改,并参考其他文档资料加入了一些内容: 单播、多播(组播)和广播的区别 作者:Roger Luo cnblogs 带你走进网络世界:广播...
  • 首先,指定源组播,linux 和windows编程稍微有些不同: Linux:bind的是组播地址和组播端口 windows:bind的是接收网卡的地址(local_ip)和组播端口 对于一个网卡收流,其他网卡不用收流 现象1):组播收不到流。...
  • 一篇讲组播MAC和各类IP地址的文章

    千次阅读 2017-11-23 16:12:52
    组播MAC地址和各类IP地址 MAC地址是以太网二层使用的一个48bit(6字节十六进制数)的地址,用来标识设备位置。MAC地址分成两部分,前24位是组织唯一标识符(OUI, Organizationally unique identifier),后...
  • 关于网络传播的介绍组播代码-发送数据报总结代码2 使用数据报接收其他用户发送的数据 关于网络传播的介绍 网络数据传播按照接收者的数量,可分为以下3种方式。 ·单播:提供点对点的通信。发送者每次发送的数据有着...
  • 如何创建和管理 Windows 10 家庭

    千次阅读 2021-07-24 02:20:16
    Windows 10 家庭是一种小型局域网网络文件共享解决方案,其在 Windows 中存在已久。使用家庭可以让本地网络中的任意 Windows 10 设备方便地访问到其它 PC 上所的共享文件和打印机等资源,说得直白一点就是其使用...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 22,768
精华内容 9,107
关键字:

windows 开启组播协议