精华内容
下载资源
问答
  • 2018-08-12 18:19:57

    最近研究下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;
    }
    

     

     

    更多相关内容
  • 一个简单的C++实现UDP组播发送和接收的程序 一个简单的C++实现UDP组播发送和接收的程序 一个简单的C++实现UDP组播发送和接收的程序 一个简单的C++实现UDP组播发送和接收的程序
  • windows查看加入的组播

    千次阅读 2019-11-22 22:11:32
    问题描述:在windows下一个正确的组播测试程序发送与接收不成功,猜测原因是网卡过多,与组播地址绑定的IP地址不正确,但用Linux的命令netstat -g,并不被支持。搜了一下,应该用以下命令 netsh interface ipv4 show...

    问题描述:在windows下一个正确的组播测试程序发送与接收不成功,猜测原因是网卡过多,与组播地址绑定的IP地址不正确,但用Linux的命令netstat
    -g,并不被支持。搜了一下,应该用以下命令 netsh interface ipv4 show joins

    查看ipv4加入的组播地址组
    在这里插入图片描述

    那么在Java中如何象C++那样指定IP地址?

    实际上MulticastSocket类的初始构造函数本身就支持绑定指定IP地址,见下图。在maven代码中点击SocketAddress,可以查看其数据结构,发现SocketAddress有一个子类,inetSocketAddress,其有两个成员函数,一个是主机名(IP地址),另一个是端口,定义一SocketAddress(纯虚类)的类实例,但new的是子类inetSocketAddress,然后对其赋值。再次运行即可。

    -实际上再次运行时并没有真正绑定到指定IP,还是靠把其它网卡都禁用才成功的。时间因素没有多试。

    -不过,如果绑定的IP并不存在,程序还是会报错的。说明这条语句还是认真执行的。
    在这里插入图片描述

    展开全文
  • C++组播和单播代码,包括server端和client端的全部封装代码和测试代码。支持windows经过72小时性能测试,没有问题。
  • windows组播工具winsend及使用说明,可以使用pc来搭建组播环境,测试组播播放器等
  • Windows netsh interface ipv4 show joins Linux netstat -gan

    Windows

    netsh interface ipv4 show joins
    在这里插入图片描述


    Linux

    netstat

    netstat -gan

    ip

    ip -h -o -4 maddr show

    -h: output statistics with human readable values followed by suffix.
    -o: output each record on a single line, replacing line feeds with the ‘’ character. This is convenient when you want to count records with wc(1) or to grep(1) the output.
    -4: shortcut for -family inet.
    maddr: multicast address.

    展开全文
  • windows下使用UDP的简单实例,包括单、广播和多的实例代码,使用VS2010编写
  • 下载mping工具: ... 将mping工具放在桌面的software文件夹下 具体用法: 1.使用win+R组合键,输入cmd,打开命令行工具 2.进入Desktop/software目录...如下图所示,则为正确接收组播流,其他为异常。 ...

    下载mping工具:

    https://www.microsoft.com/en-us/download/details.aspx?id=52307

     

    将mping工具放在桌面的software文件夹下

     

    具体用法:

    1.使用win+R组合键,输入cmd,打开命令行工具

     

    2.进入Desktop/software目录下,执行检测

    mping  239.254.2.216  5000

    如下图所示,则为正确接收组播流,其他为异常。

    展开全文
  • 组播常用配置命令

    2018-07-29 16:31:15
    在IPTV或者广电网络部署中经常要配置组播,附件是一个组播配置中常用的命令。
  • 组播测试工具(Windows)

    2014-07-14 09:03:51
    组播测试小工具,工作环境:Windows
  • VC++ Socket 组播代码
  • 组播组播软件工具

    2018-11-06 16:32:23
    软件可以提供各类组播软件使用,方便对网络设备开发者和测试者提供便捷,组播可以分类很多种组播协议报文tcp UDP IP报文等等
  • window组播工具

    2018-06-06 10:50:43
    支持window系统的组播测试工具,可以方便模拟组播发包收包流程
  • 组播测试工具.zip

    2021-01-01 23:24:57
    组播工具
  • zigbee 组播通讯

    2018-09-04 16:47:05
    组播”又称“多播”,可以理解为一个人向多个人(但不是在场的所有人)说话,这样能够提高通话的效率。如果你要通知特定的某些人同一件事情,但是又不想让其他人知道,使用电话一个一个地通知就非常麻烦,而使用...
  • linux网络编程中,组播通信在setsockopt接口中IP_ADD_MEMBERSHIP添加组播成员。但组播成员个数有限制,默认是20个。若需要添加更多的个数,则需要修改系统配置文件。本文档给出了怎么去修改默认的组播数。
  • 鉴于 Qt在开发基于组播通信的应用时无法绑定到指定网卡接收数据的问题,本文提出了一种在 Windows平台下实现任意源组播和指定源组播通信的方法。本文以 Windows 下的 Qt 开发环境为基础,通过分析软件接收组播数据的...
  • 基于Qt的Windows平台组播通信技术研究.pdf
  • mDNS(参见RFC 6762)是一种用于本地主机名查询的方式,通过组播地址224.0.0.251(或ff02::fb)上的UDP端口5353运行。当需要解析.local结尾的主机名时,应当通过mDNS协议进行解析。mDNS的工作方式与普通DNS类似,但其不...
  • windows无法接收到组播问题

    千次阅读 2020-01-20 19:31:14
    应项目要求, 参与将一个设备发现服务从 linux 移植到 windows 上的过程, 设备发现服务通过加入特定的组播组,比如239.255.255.250,来监听对应组播组的发现报文,接收到目的地址为对应组播组的地址时,返回当前...
  • windows查看端口占用情况

    千次阅读 2020-09-29 22:59:27
    windows下dos命令窗口输入netstat -ano即可查看端口使用情况,如果要查看指定端口是否被占用可以使用命令netstat -ano|findstr 端口号,例如要查看8080端口号是否已经被占用就使用命令netstat -ano|findstr 8080 ...
  • 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 ...
  • 记录Windows10上收不到组播问题

    千次阅读 2020-11-20 10:19:55
    最近两天为了做一个局域网内设备搜索功能的小工具,首先就想到用组播实现,根据网上的代码(Qt的)写好发送端和接收端,在同一个电脑上测试没有任何问题,放在同一个交换机下就不行,相互之间不能通信。 根据网上的...
  • 组播发送工具和接收工具

    热门讨论 2015-01-15 16:38:39
    组播发送和接收2个工具,可配套使用,也可以单独使用。 接收工具,可以显示收到的包内容和数量。 有说明文档。 此资源来自互联网。
  • Linux、windows组播通信所遇坑集合

    千次阅读 2020-05-15 10:50:45
    虚拟网卡导致的组播不通 很多搞代码的童鞋,会在windows上安装虚拟机捣鼓各种Linux神技。很长一段时间,爽并舒服着,突然有一天蛋疼的问题找上门了:写的组播程序怎么也通不了,程序检查了一遍又一遍,头发抓掉一把...
  • UDP组播通信服务器及客户端程序。基于Windows的API,在vs2005下开发。代码是开发项目模块的示例程序。具有一定的参考价值。
  • 在unix中,组播通信时,IP_ADD_MEMBERSHIP时可通过ip_mreq::imr_interface.s_addr指定接口地址,在windows中采用WSAJoinLeaf如何指定接口地址? 指定接口地址的目的是发送时,通过指定的IP发送出去,不由系统...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 63,870
精华内容 25,548
关键字:

windows查看组播