【问题标题】:Ping broadcast on Win XP SP3Win XP SP3 上的 Ping 广播
【发布时间】:2011-01-14 21:50:20
【问题描述】:

我正在尝试在 WinXP SP3 上 ping 广播地址 255.255.255.255。

如果我使用命令行,我会收到主机错误:

C:\>ping 255.255.255.255
Ping request could not find host 255.255.255.255. Please check the name and try again.

如果我尝试使用 iphlpapi 的 C++ 程序,IcmpSendEcho() 会失败,GetLastError 返回 11010 IP_REQ_TIMED_OUT。

HANDLE h = ::IcmpCreateFile();
IPAddr broadcast = inet_addr( "255.255.255.255" );
BYTE payload[ 32 ] = { 0 };
IP_OPTION_INFORMATION option = { 255, 0, 0, 0, 0 };

// a buffer with room for 32 replies each containing the full payload
std::vector< BYTE > replies( 32 * ( sizeof( ICMP_ECHO_REPLY ) + 32 ) );

DWORD res = ::IcmpSendEcho( h, 
                            broadcast, 
                            payload, 
                            sizeof( payload ), 
                            &option, 
                            &replies[ 0 ], 
                            replies.size(), 
                            1000 );
::IcmpCloseHandle( h );

我可以毫无问题地ping本地广播192.168.0.255。

ping 全球广播需要做什么?

谢谢, 保罗H

【问题讨论】:

  • 让我们听听ping ff02::1%0 会做什么...(可能需要将 %0 替换为 %1、%2 等以选择接口。)
  • @user562374 - Ping request could not find host ff02::1%X. Please check the name and try again. 对于 X 的所有值。

标签: c++ networking broadcast ping


【解决方案1】:

据我所知,这在 Windows 中不起作用。在 Linux 操作系统中,您可以 ping 255.255.255.255,但路由协议不会在本地网络之外中继 255.255.255.255 广播。

你想达到什么目的?你准备好连接地球上的每台计算机都会响应了吗? 我很害怕......


顺便说一句,您应该做好准备,即使在本地网络中也没有人会响应广播 ping。 This question on SF 可能很有用。

【讨论】:

  • 我的目标是让我网络上的每个主机都响应,而不管它们配置的 IP/子网是什么。定向广播工作正常。如果他们回应定向广播,他们不会回应广播吗?另外,是的,这确实适用于我的 Linux 机器。
【解决方案2】:

广播 UDP 已经过时了大约 20 年。最不可能通过路由器到达另一个子网。

【讨论】:

  • 我不是要 ping 整个互联网。我不希望它通过路由器。
  • @PaulH:您希望它进入多个子网。这意味着遍历路由器或网桥或桥接主机。你不能指望 255.255.255.255 能达到这个目的。
  • 不一定。您可以在同一交换机上拥有多个子网。通常不会那样做。但这是可以做到的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-24
  • 2010-09-07
  • 2010-10-01
  • 1970-01-01
  • 2012-01-27
  • 2014-11-15
相关资源
最近更新 更多