Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > GeoIP


Автор: MastEdm 8.10.2008, 13:36
Добрый день.

Вопрос к тем, кто работал с GeoIP через базы GeoIPCountry и GeoIPCity. Правильно ли я понимаю, что первая по идее должна быть подмножеством второй? Или City заточена только под города и регионы, а Country под страны? 

Мне нужно по айпишке определить страну. Использую базу GeoIPCity:
Код

    GeoIPRecord* record = GeoIP_record_by_ipnum(g, ipnum);
    if (record != NULL) {
        if (record->country_code != NULL) {
            id = (record->country_code - GeoIP_country_code[0]) / 3;
        }
        GeoIPRecord_delete(record);
    }

В результате нормально определяются далеко не все страны, реально половина на половину. В чем может быть косяк?

Автор: nerezus 9.10.2008, 10:49
Да либа не нужна особо, ибо примитив, юзай файл базы в csv-формате.

IP там упорядочены, поэтому юзаешь метод дихотомии чттобы определить свой айпи.

Автор: MastEdm 9.10.2008, 11:11
А разве это будет эффективнее?
Влияет ли это на точность определения?

Автор: nerezus 9.10.2008, 11:24
MastEdm, не влияет
эффективность та же
затраты другие по времени только. Просто я делал это на языке, для которого не было наитивного модуля.

Тебе проща научиться юзать модуль.

Автор: MastEdm 15.10.2008, 13:47
Пользоваться либой я умею, непонятно только почему много стран не определяется

Обновил базу, теперь все в норме.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)