我正在尝试在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全球广播?
谢谢, PaulH
答案 0 :(得分:3)
据我所知,这在Windows中不起作用。在Linux OS中,您可以ping 255.255.255.255,但路由协议不会在本地网络之外中继255.255.255.255广播。
你想要达到什么目的?您准备好连接地球上的每台计算机都会响应吗? 我很害怕...
顺便说一句,你应该准备好即使在本地网络中也没有人会响应广播ping。 This question on SF可能很有用。
答案 1 :(得分:0)
广播UDP已经过时了大约20年。最不可能通过路由器到达另一个子网。