Я являюсь хостом в подсети 255.255.255.0 - в соответствии с RFC1918.
Какие способы возможны (без итерации по 254 адресам) для сопоставления IPEndPoints в моей локальной подсети?
Я являюсь хостом в подсети 255.255.255.0 - в соответствии с RFC1918.
Какие способы возможны (без итерации по 254 адресам) для сопоставления IPEndPoints в моей локальной подсети?
Ник рядом; вам нужно пропинговать широковещательную рассылку, но не все системы будут отвечать напрямую.
Обратите внимание, что широковещательный адрес не совпадает с вашим сетевым адресом. Если ваш IP-адрес 192.168.1.42
, а ваша маска сети 255.255.255.0
, то ваш сетевой адрес - 192.168.1.0
а сетевой широковещательный адрес - 192.168.1.255
.
Пинг трансляции вашей сети:
ping 192.168.1.255 -b
ping 192.168.1.255
Проверьте кэш ARP для ответов:
arp
arp -a
Как ни странно, я получаю ответы от машины Win-7 в моей сети при пинге широковещательного адреса, но ответы других не отображаются. В моей сети 4 устройства (роутер, XP, Win7, debian); все 3 удаленные машины правильно перечислены в выводе arp
когда я выполнил вышеуказанные команды в системах Debian и WinXP.
Если вы отправите широковещательный пинг с,
ping network_address -b
где network_address
- ваша эквивалентная сеть класса c с номером 255.255.255.0
.
Все конечные точки ответят вам.
Затем вам просто нужно извлечь уникальные индивидуальные отвечающие IP-адреса из выходных данных.
Это означает, что ваш IP-адрес 192.168.1.42
в сети класса C.
Вы должны выполнить ping 192.168.1.0 -b
и посмотреть (скажем) на выходную стоимость.
Все подключенные конечные точки в сети ответят на этот широковещательный адрес.