【发布时间】:2018-09-01 19:11:01
【问题描述】:
我目前正在尝试学习编程语言 go,但遇到了这个奇怪的问题。 我创建了一个简单的 go 应用程序,它成功地获取了主机名,然后我尝试使用它来获取我的地址。最后我遍历这些地址。
package main
import (
"fmt"
"net"
"os"
"strconv"
)
func main() {
name, error := os.Hostname()
fmt.Println("Name: " + name)
fmt.Print("Error: ")
fmt.Println(error)
addrs, err := net.LookupHost(name)
fmt.Println(addrs)
fmt.Println(err)
for indx, addr := range addrs {
fmt.Println("Address number " + strconv.Itoa(indx) + ": " + addr)
}
}
输出如下:
Name: My-macbook.local
Error: <nil>
[]
lookup My-macbook.local: no such host
我也尝试使用 net.LookUpIP(name),结果相同。我已连接到互联网,并检查了我在系统偏好设置 -> 网络中是否有一个 IP 地址。我目前使用的是装有 macOS Sierra 的 Macbook Pro。
我的朋友使用完全相同的 go 版本运行完全相同的代码并返回了两个地址,所以我有什么东西阻止我看到我的 IP 地址。有没有人经历过这种情况?
【问题讨论】:
-
这只是意味着您的系统对自己的主机名的概念没有反映在 DNS 中。
-
如果您的目标是确定机器的 IP 地址,这也不是特别简单,因为一台机器可能有多个 IP 地址。
-
有没有办法改变我系统的主机名概念,以便反映我的 DNS?
-
一个答案取决于太多的事情。