2016-12-03 7 views
0

Когда я судимый, чтобы получить IP-адрес для имени DNS с getaddrinfo я получил следующее сообщение об ошибкеgetaddrinfo ошибка: имя_узел ни servname при условии, или не известен

getaddrinfo error: nodename nor servname provided, or not known

Что это означает, что ошибки? Возможно ли, что getaddrinfo не может изменить имя DNS? Но nslookup отлично работает для этого адреса. Я попытался вызвать getaddrinfo без порта, и без значка AI_NUMERICSERV с тем же результатом.

Что не так с моим звонком? OS X 10.11 plaftorm.

Это пример кода

struct addrinfo hints, *servinfo; 
int rv; 

printf("hostname: %s port: %s ", hostname, port); 

memset(&hints, 0, sizeof hints); 
hints.ai_family = AF_UNSPEC; // use AF_INET6 to force IPv6 
hints.ai_flags=AI_DEFAULT|AI_NUMERICSERV; 
if ((rv = getaddrinfo(hostname , port , &hints , &servinfo)) != 0) 
{ 

} 

ответ

1

Проблема была связана с песочницы механизмом на Mac OS X. Я забыл о том, что мое приложение изолировано. Убедитесь, что в вашем файле прав есть следующие строки.

<key>com.apple.security.app-sandbox</key> 
<true/> 
<key>com.apple.security.network.client</key> 
<true/> 
<key>com.apple.security.network.server</key> 
<true/> 

Если приложение не изолировано, getaddrinfo() работает должным образом.