c ++ getaddrinfo не обрабатывает большие URL

0

C++ Розетки. Получение информации с веб-сайта.

Я пытаюсь читать контент из сети с помощью сокетов. используя следующий код.

int status = getaddrinfo(l_url.c_str(), "http", &l_address, &l_addr_ll);
if (status != 0 ){
    printf("\n ***** getaddrinfo() failed: %s\n", gai_strerror(status));

    return FAILURE;
}

Код отлично подходит для URL-адресов, таких как "www.yahoo.com", "www.google.com", однако он не работает для URL-адреса, например "www.google.com/nexus".

Любой URL-адрес, имеющий "/", не работает с этим кодом. Я что-то пропустил?

Теги:
sockets
getaddrinfo

3 ответа

3

getaddrinfo предоставляет вам информацию о сетевых адресах, а не о URL-адресах. URL-адрес не является сетевым адресом, хотя он часто содержит один. Строка типа "www.google.com/nexus" не является ни URL-адресом, ни адресом (хотя он может быть частью URL-адреса), поэтому его не удивляет, что getaddrinfo терпит неудачу.

  • 0
    Какой быстрый ответ Крис !! Престижность.
  • 0
    Любой совет о том, как это может быть решено Крис? Мне нужны данные с определенных сайтов. Как сообщалось, я буду получать доступ к URL-адресам, таким как "google.com/nexus", "apple.com/imac" и т. д. Какие изменения необходимо внести в мой код?
Показать ещё 1 комментарий
1

На странице руководства говорится, что первый параметр должен быть именем хоста. Имя хоста - это только первая часть домена верхнего уровня. Все после этого не принадлежит имени хоста. Будьте осторожны, некоторые части до этого также могут не принадлежать имени хоста, особенно если вы видите @в своем URL-адресе.

Посмотрите на wikipedia для URL-адреса, есть длинное объяснение, какая часть URL-адреса фактически является именем хоста, которое вы можете поместить в свою функцию.

  • 0
    Любой совет о том, как читать такие данные? nvoigt.
  • 0
    Существуют различные сценарии и решения здесь .
0

Согласно странице руководства. необходимо передать информацию URL-адреса методу getaddressinfo. В этом случае пользователь должен передать имя веб-сайта. например, "www.google.com". Однако при запросе данных пользователь отправляет запрос, в этот момент пользователь может опубликовать URL-адрес, например "www.google.com/nexus",

  • Адрес будет таким же для URL. однако запрос меняется, поэтому нужно получить адрес веб-сайта, используя только до ".com". После получения информации о адресе могут быть сделаны соответствующие запросы.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню