我在 golang 中有一个设置,它基本上从操作系统获得一个免费端口,然后在它上面启动一个 http 服务器。它开始出现端口注册失败的随机错误。我将其简化为以下程序,该程序在获取一些空闲端口后似乎出错。它非常随机地发生,并且在它出错的端口上没有运行真正的进程。为什么这必须出错对我来说根本没有意义。任何帮助,将不胜感激。
程序的输出:
..
..
58479
..
..
58867
58868
58869
..
必然好!58867
绑定好!58868
绑定好!58869
..
..
..
同时绑定端口2015年4月28日9时05分09秒错误:已在使用地址:听TCP:58479:绑定
我确保检查出来的自由端口从未重复。
package main
import (
"net"
"net/http"
"log"
"fmt"
)
func main() {
for {
l, _ := net.Listen("tcp", ":0")
var port = l.Addr().String()[5:]
l.Close()
fmt.Println(port)
go func() {
l1, err := net.Listen("tcp", ":"+port)
if (err != nil) {
log.Fatal("Error while binding port: ", err.Error())
} else {
fmt.Println("bound well! ", port)
}
http.Serve(l1, nil)
}()
}
}
绝地无双
隔江千里
相关分类