getaddrinfo (): IP-адрес домена, зарегистрированного в No-IP

Я хочу соединить клиента и сервер через Интернет (используя 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));
}

}

0

Решение

Не устанавливайте ваше имя хоста как веб-перенаправление, а скорее как запись DNS. Подробнее о их сайт.

0

Другие решения


По вопросам рекламы [email protected]