определение верхнего родительского имени хоста
От: Socket Ниоткуда http://www.samborsky.com
Дата: 23.09.07 14:47
Оценка:
Добрый день.
Написал алгоритм для определения главного сервера (M) из имени хоста (H).

например
H = sample.narod.ru, M = narod.ru
или
H = sample1.sample2.narod.ru, M = narod.ru
или sample1.sample2.sample2.narod.net.tu, M = narod.net.ru

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

Сразу говорю варианты типа narod.com.com некритичны

Код:

tmp — тут "sample.narod.ru"
s — сюда запишется "narod.ru"
        std::vector<std::string> name_val;
        boost::split(name_val,tmp,boost::is_any_of("."));

        // Ищем с конца
        for( int i = name_val.size() - 1; i != -1 ; i-- ){
            // Если не домен
            if( !domains->isDomain( name_val[i] ) ){
                while( i != name_val.size() ){
                    s.append(name_val[i]);
                    if( i + 1 != name_val.size() ){
                         s.append(".");
                    }
                    i++;
                }
                ret = true;
                break;
            }
        }
http://www.samborsky.com — мой блог
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.