Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / ip-сеть (интересно) / 10 сообщений из 10, страница 1 из 1
14.07.2005, 09:47
    #33165044
imp1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ip-сеть (интересно)
Как, зная адрес сети и маску сети (либо preflen - количество единиц в двоичном представлении маски сети),
определить весь массив ip-адресов, входящих в данную сеть.
Понято ???
1. Есть ли стандартная функция.
2. Кто знает - вкратце объясните теорию, либо хорошие ссылки, пожалуйста.
-----
Например.
Зная адрес сети 81.1.202.56 и маску 255.255.255.252 взять все ip-адреса, входящие в данную сеть.
...
Рейтинг: 0 / 0
14.07.2005, 09:59
    #33165078
DocAl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ip-сеть (интересно)
Первый же результат поиска в гугле по строке "netmask calculator": http:////jodies.de/ipcalc
На первый взгляд, оно самое, исходники доступны.
...
Рейтинг: 0 / 0
14.07.2005, 10:03
    #33165086
mahoune
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ip-сеть (интересно)
А можно уточнить:
1. Есть ли стандартная функция. - PHP или Perl ?

Ты попробуй всю фигню с IP представить себе в двоичном виде - и у тебя сразу все встанет на место!

В догонку, а в принципе ты понимаешь метод рассчета IP сетей/адресов/мосок, если НЕТ - тебе сюда

Код: plaintext
mahoune
...
Рейтинг: 0 / 0
15.07.2005, 13:28
    #33168349
imp1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ip-сеть (интересно)
стандартная функция на пхп.
...
Рейтинг: 0 / 0
15.07.2005, 13:37
    #33168390
imp1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ip-сеть (интересно)
такой ленивый, хочу код на пхп , чтоб можно было передавать функции адрес сети и маску Netmask и получать массив ай-пишников, принадлежащих данной сети.
...
Рейтинг: 0 / 0
15.07.2005, 14:48
    #33168747
Шогал
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ip-сеть (интересно)
Вот прямо из мануала примерчик:
jbothe at hotmail dot com (27-Nov-2003 07:01)
The following script will print out subnet statistics when you supply the IP Address and Subnet Mask. Usefull to calculate the broadcast address and network address as well as the number of hosts and the range of IP addresses in the subnet.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
#!/usr/local/bin/php
<?
  $ip_addr = "172.14.1.57";
  $subnet_mask = "255.255.255.0";
  $ip = ip2long($ip_addr);
  $nm = ip2long($subnet_mask);
  $nw = ($ip & $nm);
  $bc = $nw | (~$nm);
  echo "IP Address:         " . long2ip($ip) . "\n";
  echo "Subnet Mask:        " . long2ip($nm) . "\n";
  echo "Network Address:    " . long2ip($nw) . "\n";
  echo "Broadcast Address:  " . long2ip($bc) . "\n";
  echo "Number of Hosts:    " . ($bc - $nw -  1 ) . "\n";
  echo "Host Range:         " . long2ip($nw +  1 ) . " -> " . long2ip($bc -  1 )  . "\n";
?>
Produces the output:
IP Address: 172.14.1.57
Subnet Mask: 255.255.255.0
Network Address: 172.14.1.0
Broadcast Address: 172.14.1.255
Number of Hosts: 254
Host Range: 172.14.1.1 -> 172.14.1.254

Надеюсь, сможешь переделать его под себя :)
Если маска задана не в виде 255.255.255.0, а в виде 24, то преобразовать его в первый вид можно какой-нибудь нехитрой битовой операцией, типа $new = (ip2long("255.255.255.255") >> (32 - $old)) << (32 - $old);
...
Рейтинг: 0 / 0
18.07.2005, 09:43
    #33170545
imp1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ip-сеть (интересно)
Network Address: 172.14.1.0
Broadcast Address: 172.14.1.255

то есть Network Address - можно считать первым адресом в сети,
а Broadcast Address - последним, так ???
...
Рейтинг: 0 / 0
18.07.2005, 09:54
    #33170572
imp1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ip-сеть (интересно)
то есть
Network Address - первый адрес в сети
Broadcast Address - последний адрес.
И чтоб весь список получить можно тупо перевести в ip2long и сделать выборку от первого до последнего, так ???
...
Рейтинг: 0 / 0
18.07.2005, 13:51
    #33171331
mahoune
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ip-сеть (интересно)
Да, так.

Код: plaintext
mahoune
...
Рейтинг: 0 / 0
19.07.2005, 05:29
    #33172455
imp1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ip-сеть (интересно)
спасибо.
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / ip-сеть (интересно) / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]