Получение доменного имени - PullRequest
0 голосов
/ 01 декабря 2011

Кроме getdomainname() есть ли другой способ получить доменное имя на Mac с помощью C?

Я также могу использовать API-интерфейсы Какао. Спасибо.

1 Ответ

1 голос
/ 01 декабря 2011

Если вы ищете DNS-имя, соответствующее локальной системе, я не думаю, что getdomainname() - ваш друг.Согласно документации , это для получения NIS доменного имени системы:

 Getdomainname() returns the standard NIS domain name for the current
 host, as previously set by setdomainname().  The parameter namelen speci-fies specifies
 fies the size of the name array.  The returned name is null-terminated
 unless insufficient space is provided.

И на самом деле, довольно точно сказать, что хост не имеет доменного имени DNS.У каждого интерфейса в вашей системе есть адрес, и может быть DNS-записью, которая преобразуется в этот адрес, но правда в том, что (a) не может быть соответствующей DNS-записьюи (b) может существовать запись DNS, которая разрешает ваш хост , а также другие системы .Например, имя хоста "google.com" преобразуется в множество разностных адресов:

$ host -t A google.com
google.com has address 74.125.226.244
google.com has address 74.125.226.240
google.com has address 74.125.226.241
google.com has address 74.125.226.242
google.com has address 74.125.226.243

И, конечно, вашей системе может быть сопоставлено несколько IP-адресов (например, как проводных, так и беспроводных).

Если вы готовы скрестить пальцы и надеетесь, лучше всего обычно определить свой локальный IP-адрес посредством звонка на getsockname() при открытом соединении, а затем выполнить обратный поиск DNS по этому адресу.найти соответствующее имя в DNS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...