Если вы ищете 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.