Как делает географический поиск работой IP?

Другое событие NullPointerException возникает, когда объявляется массив объектов, а затем сразу же пытается разыменовать его внутри.

String[] phrases = new String[10];
String keyPhrase = "Bird";
for(String phrase : phrases) {
    System.out.println(phrase.equals(keyPhrase));
}

Этот конкретный NPE можно избежать, если порядок сравнения отменяется ; а именно, использовать .equals для гарантированного непустого объекта.

Все элементы внутри массива инициализируются их общим начальным значением ; для любого типа массива объектов, это означает, что все элементы null.

Вы должны инициализировать элементы в массиве перед доступом или разыменованием их.

String[] phrases = new String[] {"The bird", "A bird", "My bird", "Bird"};
String keyPhrase = "Bird";
for(String phrase : phrases) {
    System.out.println(phrase.equals(keyPhrase));
}

25
задан Jon Seigel 1 May 2010 в 21:24
поделиться

5 ответов

Если это имеет значение я работал на высшем уровне в промышленности ISP больше десятилетия, таким образом, у меня есть небольшое количество опыта с этим.

Большие диапазоны IP выделяются по мере необходимости IANA к каждому из Региональные интернет-Реестры .

, регионы вообще континентальны в размере - IP-адреса не присвоены на основе на страну.

RIRs в свою очередь тогда выделяют IP-адреса ISPs, кто в свою очередь присваивает их конечным пользователям.

Каждый из RIRs поддерживает whois сервер, который может быть запрошен для обнаружения не только, какому ISP присвоили любой netblock, но и до некоторой степени который конечный пользователь, и что адрес конечного пользователя.

Примечание, что много ISPs не заполняют эту информацию для каждого клиента. Следовательно, если Вы - квартирный абонент услуги DSL, вероятно, что Гео-записи дадут адрес Вашего ISP, и не Ваш собственный адрес.

различные поставщики GeoLocation главным образом работают путем горной промышленности этих whois записи. Обратите внимание, что законность выполнения так является чем-то вроде серой области - оператор авторского права базы данных RIPE здесь .

IANA также поддерживает корневую зону для DNS, но это является абсолютно отдельным от любых функций выделения IP. Очень важно поддержать различие между операциями доменного имени и IP-адресами.

43
ответ дан Abacus 28 November 2019 в 20:38
поделиться

Существует множество библиотек, которые имеют таблицы отображения, а также сервисы, которые можно включить в код.

самая важная вещь понять состоит в том, что существует никакая непосредственная связь между IP-адресом и любой частью мира. Адреса выделяются в больших блоках организациям, которые являются примерно географическими, которые в свою очередь выделяют меньшие блоки, это может произойти на нескольких уровнях для любого данного IP-адреса (Alnitak объясняет процесс хорошо).

факт: данные WHOIS не должны быть точными. Если у меня есть блок адреса, я могу сказать, что это находится на Марсе И даже если Вы сужаете местоположение заключительной организации (скажите очень маленький ISP на Аляске), пользователь мог бы использовать коммутируемый доступ из Гавайев, или сервер мог бы размещать компанию из Гуама.

Так, всегда существует элемент риска/оценки в отображении IP-адреса (или доменное имя) к физическому местоположению. Нельзя сказать Вы никогда не должны делать этого, существует много приложений, где грубо или несовершенная информация очень полезно.

5
ответ дан 2 revs, 2 users 94% 28 November 2019 в 20:38
поделиться

Остерегайтесь, данные часто не спешат быть обновленными, и еще медленнее копировать. Мое место работы изменило ISPs много лет назад, и нам присвоили блок раньше канадских IP-адресов (мы базируемся в США), поскольку Google месяцев продолжал давать нам google.ca как нашу поисковую систему по умолчанию. О 1/2 время мой домашний IP-адрес подходит как являющийся из моего города, другой 1/2 из города в другом состоянии.

Jason прав, что процесс является тем же, но обновления еще медленнее и менее точные данные.

2
ответ дан acrosman 28 November 2019 в 20:38
поделиться

Для ответа на конкретный вопрос о, "как это работает": существует большой физический труд, включенный, и базы данных в большой степени сохраняются вручную . Как другие ответы указывают, нет никакой реальной корреляции между диапазонами IP и странами, а тем более определенными регионами. Недавно система распределения пространства IP-адресов была еще более децентрализована, что означает, что маленькие частные поставщики могут получить диапазоны адресов IPv4 независимо от географического региона. Поэтому Google получил Пострела, таким образом, они могли использовать свои сервисы для Google Analytics, который обеспечивает очень точная IP-to-geographic-region информация.

, Если Вы не хотите использовать сервис как MaxMind (свободный для персонального использования, и база данных открыта в некоторой степени) или Google Analytics (свободный для персонального использования), там свободен (и следовательно всегда немного устарел), базы данных, плавающие вокруг, иногда как плоские файлы.

4
ответ дан bzlm 28 November 2019 в 20:38
поделиться

Ответ Alnitak находится в значительной степени на метке.

Как примечание стороны, если Вы хотите использовать .dll для определения местоположения пользователя, тогда можно попробовать этот IPAddressExtension, найденный на CodePlex. Это имеет внутреннюю базу данных ISP к местоположениям. Как упомянуто выше Alnitak, каждый ISP имеет блоки IP.. таким образом, эта информация все прокладывается под землей в .dll:)

Это действительно просто в использовании. Просто сошлитесь на .dll и затем создайте экземпляр Система. Сеть. Объект IpAddress! расширения перечислены на нем.

я также должен объявить, что я - автор этого codeplex проект/продукт.

проверьте его:)

РЕДАКТИРОВАНИЕ: добавленная информация обо мне являющийся автором того продукта.

1
ответ дан Pure.Krome 28 November 2019 в 20:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: