TCP监听端口0的含义

2022-09-18  本文已影响0人  简单点的笨演员

今天在看第三方go库源代码的时候,发现有个监听端口0,不太明白其含义:

// Create a listener
l, err := net.Listen("tcp", "127.0.0.1:0")
if err != nil {
    t.Fatalf("err: %s", err)
}

从网上找到了答案:端口号 0 有特殊的含义,在unix socket编程当中,端口号 0 是一种由系统指定动态生成的端口。也即是说,监听端口0,系统会自动重新分配一个系统空闲的端口。写个测试代码试试:

package main

import (
    "net/http"
)

func main() {
    http.ListenAndServe(":0", nil)
}

跑起来,的确是,自动分配了新的端口,在windows10下,分配的端口比较大,5次测试分配的端口都是50000左右的。

上一篇 下一篇

猜你喜欢

热点阅读