【发布时间】:2015-03-26 19:05:55
【问题描述】:
我有一个简单的 golang 程序,它在执行名为 testFunc
的函数之前侦听端口上的活动func main() {
http.HandleFunc("/test", testFunc)
http.ListenAndServe(":1337", nil)
}
当我构建这个程序时,运行它并转到http://localhost:1337/test,它工作正常。
当我终止程序并尝试再次运行它时,程序立即终止,显示没有错误输出。
例如,当我将端口更改为 1338 时,它第一次工作,然后每次都失败。有什么想法吗?
【问题讨论】:
-
听起来像是防火墙问题...您可以尝试禁用防火墙/打开这些端口吗?
-
检查来自
http.ListenAndServe的错误 -
http.ListenAndServe 返回错误。打印错误以找出问题所在。
-
“显示没有错误输出”……不废话,你没有捕获并显示它! 从不忽略任何 Go 代码中的错误返回。
-
顺便说一句,该错误可能是由于您的操作系统需要将端口的资源保留一段时间,直到旧的(可能不完全/错误关闭)连接完全过期。