Как я могу получить последовательный результат от gethostname () на OS X? - PullRequest
2 голосов
/ 02 апреля 2011

Когда я вызываю gethostname () на моем Mac, иногда он возвращает «george», иногда он возвращает «George.local».Что я могу изменить, чтобы он всегда возвращал одно и то же?(Мне все равно, я просто хочу, чтобы это было согласованно.)

Справочная информация: на моем компьютере Mac используется Unison (www.cis.upenn.edu/~bcpierce/unison/index.html)10.6.Unison использует комбинацию вещей, одной из которых является имя хоста, для именования файла, в котором он хранит предыдущие результаты.Когда строка, возвращенная из gethostname (), изменяется, Unison не может найти предыдущий файл.Это приводит к множеству неприятных действий.

Когда я первоначально настраивал систему, я установил имя на панели управления общим доступом как «Джордж».В настоящее время, когда я использую команду hostname, она возвращает «george».Когда я использовал Unison несколько дней назад, Unison использовал имя «George.local».Я видел такое поведение с Unison несколько раз за последние несколько месяцев.

Я многое изменил за это время;Я понятия не имею, что, если таковые имеются, может быть значительным.

1) Я делаю это со своего ноутбука.В разное время он подключен к разным маршрутизаторам, а иногда и вовсе не подключен.

2) Возможно, я обновлял версии OS X время от времени.Для текущей проблемы, я уверен, что я сделал обновление (с 10.6.6 до 10.6.7).Что касается предыдущих случаев, я не помню.

3) Иногда я подключаюсь с помощью Airport, иногда с помощью кабеля.

Может кто-нибудь пролить свет на то, что может делать gethostname () и почемуон может возвращать разные строки?

Спасибо, Пэт

(обновление от 1 мая 2011 г.) Возможно, проблема в плохом взаимодействии между OS X и маршрутизатором 2Wire для моей службы AT & T DSL.Когда я загружаюсь без подключения к сети, hostname возвращает «George.local», что я и установил в панели управления Sharing.Как только я подключаюсь к маршрутизатору, используя Ethernet или AirPort, имя хоста теперь возвращает «george».

Есть ли какая-либо опция конфигурации в этом конкретном маршрутизаторе, которая управляет этим?

Этого не произошлоили с моим маршрутизатором Verizon FIOS или с моим Verizon DSL.Я не помню бренды этих роутеров, но ни один из них не был 2Wire.

1 Ответ

0 голосов
/ 02 апреля 2011

Как насчет того, чтобы предложить другую альтернативу?gethostbyname () на самом деле является более старым API и на самом деле не является текущим рекомендуемым API для использования.Текущий рекомендуемый API, который был стандартизирован и существует практически везде, - это getaddrinfo ().Вы должны рассмотреть возможность перехода на это вместо этого!

...