getaddrinfo () не работает в Android?

Я создаю библиотеку C, которая у нас есть, используя цепочку сборки Android NDK. В целом все работает, но следующий раздел вызывает проблемы:

#include <netdb.h>
...
    struct addrinfo* addr_result;

    struct addrinfo hints;
    memset(&hints, 0, sizeof(hints));
    hints.ai_family = AF_INET;
    hints.ai_socktype = SOCK_STREAM;
    hints.ai_protocol = IPPROTO_TCP;

    LOGD("host name: %s", name);
    result = getaddrinfo(name, GCSL_NULL, &hints, &addr_result);
    LOGD("result: %d", result);

getaddrinfo возвращает код ошибки 7, что переводится как «EAI_NODATA».

Я попытался заменить «имя» простыми URL-адресами, такими как «www.google.com» и «http://www.google.com", но ничего не работает.

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


person greg7gkb    schedule 06.08.2010    source источник


Ответы (2)


Убедитесь, что у вас есть разрешение INTERNET в AndroidManifest.xml.

person FeelGood    schedule 17.09.2012

Похоже, это могло быть вызвано ошибкой DNS эмулятора:

http://groups.google.com/group/android-developers/browse_thread/thread/b04537d827c4f9e1

person greg7gkb    schedule 31.03.2011