当程序不指定server端口时,server需要自动监听一个可用端口进行启动,这样的需求能实现吗?
答案肯定是可以的。
传入的地址为::0
,即可自动寻找可用端口进行监听。
1 2 3 4 5 6 7 8 9
| func main() { listener, err := net.Listen("tcp4", "localhost:0") if err != nil { log.Panic("server start error :", err) } defer listener.Close()
fmt.Println(listener.Addr().String()) }
|
假如,我想在gin
框架上这样操作呢?这样也是可行的,只不过你会发现,我们无法打印出获取的端口号。
1 2 3 4
| func main() { router := gin.Default() http.ListenAndServe("localhost:0", router) }
|
那我们可以自己创建Listen,不使用库。
1 2 3 4 5 6 7 8 9 10
| func main() { r := gin.Default()
ln, _ := net.Listen("tcp", "localhost:0")
_, port, _ := net.SplitHostPort(ln.Addr().String()) fmt.Println("Listening on port", port, ln.Addr().String())
http.Serve(ln, r) }
|
本文标题:启动server,自动监听可用端口
文章作者:小师
发布时间:2020-08-03
最后更新:2022-05-04
原始链接:chunlife.top/2020/08/03/启动server,自动监听可用端口/
版权声明:本站所有文章均采用知识共享署名4.0国际许可协议进行许可