4

我正在尝试运行一个应用程序 Pharo,该应用程序需要来自运行它的主机的 Ip 的数据。一般来说,我必须打开代码以在我的 Pharo 代码中手动设置它,然后启动应用程序。是否有更好的编程方式来获取 IP 地址并自动返回此地址,而不管计算机如何?假设我将它部署到不同的计算机。

4

1 回答 1

6

我想你正在寻找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你可能有主机映射问题。
您可以使用 via ping "hostname"eg进行测试,ping localhost.localdomain 这将使您得到回复127.0.0.1。如果您有正确的设置(主机、DNS 等),您应该从您的 IP 地址获得回复。

当我将hostnamefrom更改localhost.localdomainsmalltalk然后 ping smalltalk 正确回复192.168.10.30. 然后Pharo产生正确的结果。

于 2018-07-12T09:51:30.060 回答