Я хочу соединить клиента и сервер через Интернет (используя C++ и winsock2), поэтому я зарегистрировал доменное имя для сервера на No-IP, чтобы клиент мог определить его IP-адрес без необходимости быть на одном и том же LAN. Но когда клиент использует getaddrinfo () для определения IP-адреса сервера по доменному имени, getaddrinfo () всегда возвращает 8.23.224.90 (который не является IP-адресом сервера). Статистика Ping также показывает, что IP-адрес доменного имени 8.23.224.90. После того, как я долго гуглял проблему, я обнаружил это на веб-сайте No-IP:

«IP-адреса 8.23.224.90 и 50.19.220.154 являются прямыми адресами для наших серверов веб-перенаправления. Если вы настроили имя хоста в качестве веб-перенаправления, перенаправления порта 80 или включили автономную страницу, это IP-адреса, которые будут назначены вашему хосту ».

В настоящее время именно так клиент получает IP-адрес от имени домена "имя хоста". Что я должен добавить / изменить, чтобы получить реальный IP-адрес? Заранее спасибо...

int hostname_to_ip(char *hostname, char *ip) {

    struct addrinfo hints, *servinfo, *p;
    struct sockaddr_in *h;

    memset(&hints,0,sizeof(hints));
    hints.ai_family=AF_INET;
    hints.ai_socktype=SOCK_STREAM;

    getaddrinfo(hostname,NULL,&hints,&servinfo);
    for (p=servinfo; p!=NULL; p=p->ai_next) {
        h=(struct sockaddr_in*)p->ai_addr;
        strcpy(ip,inet_ntoa(h->sin_addr));
    }

}

1 ответ1

1

Я не знаю о панели конфигурации No-Ip Plus, но я думаю, что это близко к той же бесплатной части.

Логично перенаправить на сервер No-Ip, если ваш DNS настроен на использование веб-функции. Убедитесь, что опция, такая как "Перенаправление порта 80" или «Веб-перенаправление», не отмечена.

Вместо этого вам нужно «DNS Host (A)» (перенаправить DNS на IPv4).

Чтобы изменения вступили в силу, может потребоваться несколько минут (по умолчанию TTL составляет 1 минуту, поэтому подождите не менее одной минуты, прежде чем пытаться снова)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .