首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对“`telnet”和“`telnet 0.0.0”感到困惑

对“`telnet”和“`telnet 0.0.0”感到困惑
EN

Stack Overflow用户
提问于 2018-04-30 08:28:47
回答 1查看 693关注 0票数 0

我编写了一个简单的GO程序,它可以监听0.0.0.0:9999127.0.0.1:9999

代码语言:javascript
复制
func main() {
    go bind("0.0.0.0:9999", "111 ")
    go func() {
        time.Sleep(2 * time.Second)
        bind("127.0.0.1:9999", "222 ")
    }()

    time.Sleep(time.Hour)
}

func bind(address string, content string) {
    fmt.Println("-------------", address, "-----------------")
    listener, err := net.Listen("tcp", address)
    if err != nil {
        panic(err)
        return
    }
    fmt.Println(listener.Addr().String())

    conn, _ := listener.Accept()
    for {
        _, err := conn.Write([]byte(content))
        if err != nil {
            panic(err)
        }
        time.Sleep(1 * time.Second)
    }
}

守则的含义:

它绑定两个地址,并对它们的客户端给出不同的响应。

  1. 绑定"0.0.0.0:9999":将"111“重复发送到客户端
  2. 绑定"127.0.0.1:9999":将"222“重复发送到客户端

然后我使用telnet尝试不同的地址,响应如下:

  • telnet 127.0.0.1 9999222 (OK)
  • telnet localhost 9999111 (为什么?!)
  • telnet 0.0.0.0 9999222 (为什么?!)
  • telnet <my-internal-ip> 9999111 (OK)

我对其中的一些很困惑:

  • telnet localhost 9999111 (为什么?!) localhost应该指向127.0.0.1,所以我认为telnet 127.0.0.1 9999和响应应该是222,但是实际的响应应该是111
  • telnet 0.0.0.0 9999222 (为什么?!) 我认为0.0.0.0127.0.0.1不一样,我希望得到111的响应,但得到222

我还有一个演示项目:https://github.com/golang-demos/go-bind-0.0.0.0-127.0.0.1-demo

更新:我的操作系统是OSX

EN

回答 1

Stack Overflow用户

发布于 2018-04-30 20:32:19

操作系统将localhost0.0.0.0解析为127.0.0.1

$ ping 0.0.0.0

代码语言:javascript
复制
PING 0.0.0.0 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.024 ms

$ping localhost

代码语言:javascript
复制
PING localhost (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.035 ms`

localhost可以根据/etc/hosts文件解决其他问题。

对Linux ping 0.0.0.0行为的一个很好的解释是here

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50096683

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档