在 Pharo smalltalk 中有没有特定的方法来获取计算机的 IP?

Is there a specific way to get the Ip of a computer in Pharo smalltalk?

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

我认为您正在搜索 NetResolverName

要获取您的计算机名称:

NetNameResolver localHostName

然后你就可以用它来获取IP地址了。如果在工作区执行:

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" 进行测试,例如ping localhost.localdomain 这将使您得到 127.0.0.1 的回复。如果您的设置(主机、DNS 等)正确,您应该会从您的 IP 地址收到回复。

当我将 hostnamelocalhost.localdomain 更改为 smalltalk 时,ping smalltalk 会正确回复 192.168.10.30。然后 Pharo 产生正确的结果。