Есть ли какой-то конкретный способ получить IP-адрес компьютера в Pharo smalltalk?

Я пытаюсь запустить приложение Pharo, которому требуются данные из IP-адреса главного компьютера, на котором оно запущено. В общем, мне нужно открыть код, чтобы установить его вручную в моем коде Pharo, а затем запустить приложение. Есть ли лучший программный способ получения IP-адреса и автоматического возврата этого адреса независимо от компьютера? Скажем, я развернул его на другом компьютере.

пожалуйста, не забудьте отметить свои вопросы отвеченными, когда вы будете довольны ответом! Подробнее см. stackoverflow.com/help/someone-answers

tukan 12.07.2018 15:40

Не существует такого понятия, как «IP-адрес». Компьютеры могут иметь несколько сетевых подключений (Wi-Fi, проводные), каждое из которых имеет свой собственный адрес.

Stephan Eggermont 20.08.2018 12:48
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
4
2
151
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Думаю, вы ищете NetResolverName.

Чтобы получить имя вашего компьютера:

NetNameResolver localHostName

Затем вы можете использовать его в качестве IP-адреса. Если вы выполняете в Workspace:

NetNameResolver addressForName: NetNameResolver localHostName

Вы получите адрес в локальной сети.

В моем случае: #[192 168 1 17]

Редактировать

Вы также можете напрямую запросить его через:

NetNameResolver localAddressString

Где получить только: '192 168 1 17'

Примечание: если вы получаете 127.0.0.1

Если вы получаете адрес localhost => 127.0.0.1, у вас, вероятно, проблемы с сопоставлением хоста. Вы можете проверить это с помощью ping "hostname", например. ping localhost.localdomain на который вы получите ответы от 127.0.0.1. Если у вас правильные настройки (хосты, DNS и т. д.), Вы должны получить ответ со своего IP-адреса.

Когда я поменял hostname с localhost.localdomain на smalltalk, тогда ping smalltalk правильно отвечает с 192.168.10.30. Тогда Pharo выдаст правильный результат.

при этом я получаю адрес обратной связи 127.0.0.1. Вместо этого мне нужен частный IP, как в вашем случае.

ludo 12.07.2018 13:45

@ludo что вам возвращает NetNameResolver localHostName?

tukan 12.07.2018 13:53

Он возвращает ByteString с именем компьютера.

ludo 12.07.2018 13:58

@ludo не могли бы вы опубликовать настоящее имя?

tukan 12.07.2018 14:00

Так называется компьютер: mylinux

ludo 12.07.2018 14:29

@ludo, если вы делаете ping mylinux, какой IP-адрес запрашивается? (Я предполагаю, что у вас нет правильного сопоставления имени с IP-адресом). Приведенный выше пример был запущен в Windows, он правильно возвращает IP при пинге. Когда я попробовал использовать свою Linux-виртуальную машину с ping localhost.localdomain, я получил возврат 127.0.0.1 => Pharo показал 127.0.0.1. Когда я изменил имя sudo hostnamectl set-hostname smalltalk (имя хоста smalltalk сопоставлено с 192.168.10.30), ping smalltalk правильно возвращает 192.168.10.30, как и Pharo.

tukan 12.07.2018 14:45

вы действительно правы. ping вернет 127.0.0.1. Означает ли это, что мне нужно внести изменения в / etc / hosts? Я поменял имя, ни к чему не разрешается

ludo 12.07.2018 15:09

@ludo, который зависит от настроек вашей сети. самый легкий, не всегда правильно, заключается в внесении изменений в ваш /etc/hosts.

tukan 12.07.2018 15:21

Он отлично работает с окнами. Я внесу некоторые изменения и дам вам знать. Спасибо.

ludo 12.07.2018 15:51

@ludo, вы должны проголосовать за этот ответ (помимо отметки зеленой отметкой). Спасибо!

Leandro Caniglia 12.07.2018 23:33

Другие вопросы по теме