草庐IT

windows - ping 224.0.0.1 无回复

coder 2024-06-21 原文

这几天我在玩多播,遇到了一些我不明白的奇怪事情。

我创建了一个聊天多播客户端,一切似乎都正常。之后,我阅读了一些 linux 文档,发现通过 ping 224.0.0.1 应该会从加入某个多播组的所有节点返回给我回复。我在 xp 和 win7 机器上试过。两者的行为相同。看来我的客户只加入了我定义的组(224.0.19.1)。它不加入 224.0.0.1 组。

来自wireshark: [source ip] 224.0.0.22 IGMPv3 54 Membership Report/Join group 224.0.19.1 for any sources

这是我设置套接字的方式:

        IPEndPoint ipep = new IPEndPoint(IPAddress.Any, int.Parse(port));

        m_socket.Bind(ipep);

        IPAddress ip = IPAddress.Parse(mcastGroup);

        m_socket.SetSocketOption(
            SocketOptionLevel.IP, SocketOptionName.AddMembership, 
            new MulticastOption(ip, IPAddress.Any));

然后我检查了 netsh:

C:\Users\user1>netsh interface ip show joins

Interface 1: Loopback Pseudo-Interface 1

Scope       References  Last  Address
----------  ----------  ----  ---------------------------------
0                    2  Yes   239.255.255.250

Interface 11: LAN

Scope       References  Last  Address
----------  ----------  ----  ---------------------------------
0                    0  Yes   224.0.0.1
0                    1  Yes   224.0.0.252
0                    1  Yes   224.0.19.1
0                    1  Yes   230.230.230.230
0                    2  Yes   239.255.255.250

Interface 15: Local Area Connection* 9

Scope       References  Last  Address
----------  ----------  ----  ---------------------------------
0                    0  Yes   224.0.0.1

正如您所注意到的,没有引用 224.0.0.1 地址。 当然我确实关闭了两台机器上的防火墙。

现在的问题是:Windows 不支持这个吗? .NET 不支持?我忘了实现什么吗?我将不胜感激任何帮助。谢谢。

最佳答案

我现在花了一些时间调查这个问题,我决定分享我学到的东西。

一旦绑定(bind)到某个多播组,您的引用计数就会增加。对 224.0.0.1 的引用始终为 0,因为无法绑定(bind)到该组(至少在 win7 上不行)。

似乎在 Windows 上禁用了多播 ping。我没有找到答案,但我发现我的 HP 打印机正在对 ping 224.0.0.1 进行回复。

D:\tools>ping 224.0.0.1

Pinging 224.0.0.1 with 32 bytes of data:
Reply from 10.13.72.103: bytes=32 time<1ms TTL=64
Reply from 10.13.72.103: bytes=32 time<1ms TTL=64
Reply from 10.13.72.103: bytes=32 time<1ms TTL=64
Reply from 10.13.72.103: bytes=32 time<1ms TTL=64

还有另一个选项可以检查是否有人在使用多播地址以及他们在哪个组中。通过运行 igmpquery tool ,您将获得所有节点的成员资格报告。该工具实际上是在 224.0.0.1 地址上发送一个 IGMP 通用查询,然后得到所有节点的响应:

Source                Destination           Protocol Length Info
10.11.72.28           224.0.0.1             IGMPv2   60     Membership Query, general
10.11.72.12           224.0.0.252           IGMPv2   60     Membership Report group 224.0.0.252
10.11.72.12           239.255.255.250       IGMPv2   60     Membership Report group 239.255.255.250
10.11.72.28           224.0.19.1            IGMPv2   46     Membership Report group 224.0.19.1
10.11.72.254          224.0.0.2             IGMPv2   60     Membership Report group 224.0.0.2
10.11.72.103          224.0.0.251           IGMPv1   60     Membership Report

节点只有在监听某个多播地址时才会响应。 win 节点可以加入 224.0.0.1 组,只要它能够接收 IGMP 请求。这可以通过将注册表值 IG​​MPLevel 设置为 0 来禁用。

至此,我自己解释了所有问题。唯一仍然困扰我的是,我没有找到任何关于 Windows 不支持多播 ping 的官方文档。好在列表不完整,因为它可以发送 ping 请求,但不能发送回显。

关于windows - ping 224.0.0.1 无回复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21574463/

有关windows - ping 224.0.0.1 无回复的更多相关文章

  1. ruby - 在 Ruby 程序执行时阻止 Windows 7 PC 进入休眠状态 - 2

    我需要在客户计算机上运行Ruby应用程序。通常需要几天才能完成(复制大备份文件)。问题是如果启用sleep,它会中断应用程序。否则,计算机将持续运行数周,直到我下次访问为止。有什么方法可以防止执行期间休眠并让Windows在执行后休眠吗?欢迎任何疯狂的想法;-) 最佳答案 Here建议使用SetThreadExecutionStateWinAPI函数,使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入休眠状态或关闭显示。像这样的东西:require'Win32API'ES_AWAYMODE_REQUIRED=0x0

  2. ruby - Ping ruby 网站? - 2

    在Ruby中可以使用哪些替代方法来ping一个ip地址?标准库“ping”库的功能似乎非常有限。我对在这里滚动我自己的代码不感兴趣。有没有好的gem?我应该接受它并忍受它吗?(我在Linux上使用Ruby1.8.6编写代码) 最佳答案 net-ping值得一看。它允许TCPping(如标准ruby​​ping),但也允许UDP、HTTP和ICMPping。ICMPping需要root权限,但其他则不需要。 关于ruby-Pingruby网站?,我们在StackOverflow上找到一个类

  3. ruby - 在 Windows 机器上使用 Ruby 进行开发是否会适得其反? - 2

    这似乎非常适得其反,因为太多的gem会在window上破裂。我一直在处理很多mysql和ruby​​-mysqlgem问题(gem本身发生段错误,一个名为UnixSocket的类显然在Windows机器上不能正常工作,等等)。我只是在浪费时间吗?我应该转向不同的脚本语言吗? 最佳答案 我在Windows上使用Ruby的经验很少,但是当我开始使用Ruby时,我是在Windows上,我的总体印象是它不是Windows原生系统。因此,在主要使用Windows多年之后,开始使用Ruby促使我切换回原来的系统Unix,这次是Linux。Rub

  4. Vscode+Cmake配置并运行opencv环境(Windows和Ubuntu大同小异) - 2

    之前在培训新生的时候,windows环境下配置opencv环境一直教的都是网上主流的vsstudio配置属性表,但是这个似乎对新生来说难度略高(虽然个人觉得完全是他们自己的问题),加之暑假之后对cmake实在是爱不释手,且这样配置确实十分简单(其实都不需要配置),故斗胆妄言vscode下配置CV之法。其实极为简单,图比较多所以很长。如果你看此文还配不好,你应该思考一下是不是自己的问题。闲话少说,直接开始。0.CMkae简介有的人到大二了都不知道cmake是什么,我不说是谁。CMake是一个开源免费并且跨平台的构建工具,可以用简单的语句来描述所有平台的编译过程。它能够根据当前所在平台输出对应的m

  5. 深度学习部署:Windows安装pycocotools报错解决方法 - 2

    深度学习部署:Windows安装pycocotools报错解决方法1.pycocotools库的简介2.pycocotools安装的坑3.解决办法更多Ai资讯:公主号AiCharm本系列是作者在跑一些深度学习实例时,遇到的各种各样的问题及解决办法,希望能够帮助到大家。ERROR:Commanderroredoutwithexitstatus1:'D:\Anaconda3\python.exe'-u-c'importsys,setuptools,tokenize;sys.argv[0]='"'"'C:\\Users\\46653\\AppData\\Local\\Temp\\pip-instal

  6. ruby - 如何在 Ruby 中执行 Windows CLI 命令? - 2

    我在目录“C:\DocumentsandSettings\test.exe”中有一个文件,但是当我用单引号编写命令时`C:\DocumentsandSettings\test.exe(我无法在此框中显示),用于在Ruby中执行命令,我无法这样做,我收到的错误是找不到文件或目录。我尝试用“//”和“\”替换“\”,但似乎没有任何效果。我也使用过系统、IO.popen和exec命令,但所有的努力都是徒劳的。exec命令还使程序退出,这是我不想发生的。提前致谢。 最佳答案 反引号环境就像双引号,所以反斜杠用于转义。此外,Ruby会将空格解

  7. ruby - 错误 : Failed to build gem native extension on Windows - 2

    我在安装“redcarpet”gem时遇到以下错误。它在我friend的机器上安装没有问题。(我想安装它来运行yard)ruby版本:1.9.3命令输出:D:\Learning\Common_POM_FW\SampleProjects>yard[error]:Missing'redcarpet'gemforMarkdownformatting.Installitwith`geminstallredcarpet`D:\Learning\Common_POM_FW\SampleProjects>geminstallredcarpetTemporarilyenhancingPATHtoinc

  8. ruby - 从 Ruby 连接到适用于 Windows Phone 8 的 Microsoft 推送通知服务 - 2

    我们正在开发一个需要推送通知的WP8应用程序。为了测试它,我们使用CURL命令行运行推送通知POST请求,确保它实际连接,使用客户端SSL证书进行身份验证并发送正确的数据。我们确实知道,当我们收到对设备的推送时,这项工作是有效的。这是我们一直用于测试目的的CURL命令:curl--certclient_cert.pem-v-H"Content-Type:text/xml"-H"X-WindowsPhone-Target:Toast"-H"X-NotificationClass:2"-XPOST-d"MytitleMysubtitle"https://db3.notify.live.ne

  9. ruby - 在 Windows 7 上运行 Jekyll - 2

    我在Windows7上运行Jekyll时遇到问题。当我运行时jekyll出现以下错误C:\temp\jekyll\kouphax.github.com>jekyllConfigurationfromC:/temp/jekyll/kouphax.github.com/_config.ymlBuildingsite:C:/temp/jekyll/kouphax.github.com->C:/temp/jekyll/kouphax.github.com/_siteunit-testingYouaremissingalibraryrequiredforTextile.Pleaserun:$[s

  10. ruby - 尝试在 Windows 8 (x64) : Error installing fast-stemmer-1. 0.2.gem 上安装 Jekyll - 2

    我正在尝试使用本手册让Jekyll在Windows8x64上运行:RunningJekyllonWindows我正在使用来自rubyinstaller.org的以下两个下载:ruby2.0.0-p0(x64)DevKit-mingw64-64-4.7.2-20130224-1432-sfx.exe所以我根据手册设置了Ruby和DevKit(希望它是更新的版本)。我尝试运行一点HelloWorld.rb脚本,它工作正常,路径变量已设置。然后我尝试运行geminstalljekyll并得到以下输出:geminstalljekyll-outputonpastebin.com问题似乎出在名为f

随机推荐