在 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 地址收到回复。
当我将 hostname
从 localhost.localdomain
更改为 smalltalk
时,ping smalltalk 会正确回复 192.168.10.30
。然后 Pharo
产生正确的结果。
我正在尝试 运行 一个应用程序 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 地址收到回复。
当我将 hostname
从 localhost.localdomain
更改为 smalltalk
时,ping smalltalk 会正确回复 192.168.10.30
。然后 Pharo
产生正确的结果。