Пинг транслируется на Win XP SP3 - PullRequest
0 голосов
/ 15 января 2011

Я пытаюсь пропинговать широковещательный адрес 255.255.255.255 на WinXP SP3.

Если я использую командную строку, я получаю сообщение об ошибке хоста:

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

Если я пробую программу на C ++ с использованием iphlpapi, 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 );

Я могу без проблем пропинговать локальную трансляцию 192.168.0.255.

Что мне нужно сделать, чтобы пропинговать глобальную трансляцию?

Спасибо, PaulH

Ответы [ 2 ]

3 голосов
/ 15 января 2011

Это не работает в Windows, как я знаю.В ОС Linux вы можете пропинговать 255.255.255.255, но протокол маршрутизации не будет ретранслировать 255.255.255.255 трансляций за пределы локальной сети.

Чего вы пытаетесь достичь?Готовы ли вы, что каждый компьютер на подключенной земле будет отвечать? Мне страшно ...


Кстати, вы должны быть готовы, что никто не ответит на широковещательный пинг даже в локальной сети. Этот вопрос по SF может быть полезен.

0 голосов
/ 15 января 2011

Broadcast UDP устарел около 20 лет.Маловероятно, что через маршрутизатор можно попасть в другую подсеть.

...