Может ли кто-нибудь предложить, пожалуйста, что нужно изменить, чтобы он стал также совместимым с IPV6.Работает нормально для IPV4 - PullRequest
0 голосов
/ 05 мая 2011
int lookup_numeric( const char * hostname, char * ip_address )
{
    int index = 0;
    int value = 0;

    for( const char * cursor = hostname; ; ++cursor )
    {
    if( ( '0' <= *cursor ) && ( *cursor <= '9' ) )
    {
        value *= 10;
        value += *cursor - '0';
        if( value > 255 )
        break;
    }
    else if( *cursor == '.' )
    {
        if( index >= IpAddressSize ) //IpAddressSize is 16 for IPV6 and 4 for IPV4.
        break;
        ip_address[ index++ ] = (char)value;
        value = 0;
    }
    else if( *cursor == '\0' )
    {
        if( index != IpAddressSize - 1 )
        break;
        ip_address[ index ] = (char)value;
        return 1;
    }
    else
        break;
    }
    return 0;
}

1 Ответ

3 голосов
/ 05 мая 2011

Похоже, что функция принимает текстовое представление адреса IPv4 (например, «127.0.0.1») и преобразует его в массив байтов.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...