Получить мой собственный IP-адрес

#c #linux #networking

#c #linux #сеть

Вопрос:

Если я использую getHostByName() , я получаю только «127.0.0.1», потому что он записан в / etc / host, но для меня это бесполезно.

Однако, со следующим Java-кодом я действительно получаю то, что хочу:

 NetworkInterface.getByName(("eth0")).getInetAddresses().nextElement().getHostAddress()
  

Я думаю, что есть способ получить тот же ip-адрес также из C?

Ответ №1:

Проверьте getifaddrs .

Ответ №2:

Это указывает на пресловутую проблему неправильной настройки Linux / etc / hosts. Файл hosts должен сопоставить 127.0.0.1 с localhost, а ваш реальный IP-адрес — с вашим реальным именем хоста.

Комментарии:

1. Но это бесполезно для ноутбуков, поскольку у вас может не быть постоянного реального IP-адреса. Сопоставление имени с локальной обратной связью удовлетворяет некоторым инструментам, которым необходимо его найти, и работает везде. Так что это предпочтительнее для ноутбуков, если только вам не нравится редактировать свой / etc / hosts каждый раз, когда вы перемещаетесь.