【发布时间】:2017-01-24 18:46:31
【问题描述】:
我正在尝试创建一个 GoLang http.HandleFunc() 来监听 post 请求并解析一个 json 文件。处理程序在启动时似乎失败并返回错误:
2017/01/24 13:35:08 监听 tcp :8080: bind: 每个只用一次 套接字地址(协议/网络地址/端口)通常是允许的。
我假设它抛出了一个致命错误。
下面是我的功能:
http.HandleFunc("/", func(w http.ResponseWriter, request *http.Request) {
//debug
fmt.Fprintf(w, "Hello, %q", html.EscapeString(request.URL.Path))
var m Message
if request.Body == nil {
http.Error(w, "Please send a request body", 400)
return
}
err := json.NewDecoder(request.Body).Decode(&m)
if err != nil {
http.Error(w, err.Error(), 400)
return
}
})
log.Fatal(http.ListenAndServe(":8080", nil))
如何让这个 Handler 工作而不报错?
【问题讨论】:
-
您的代码 sn-p 没有任何意义;为什么会有一个
defer res.Body.Close()呼叫“在不知道的地方”? -
这个错误表明已经有另一个进程或线程在监听该端口。您的计算机上是否有另一个程序服务于端口
8080? -
@TimCooper 我不确定它应该去哪里?有什么建议吗?
-
@JordanLewis 我跑了 netstat -nc TCP |找到“8080”却一无所获
-
我想通了。处理程序继续作为 Windows 上的进程运行,直到您关闭 Eclipse 或终止该进程。执行此操作后,您可以运行处理程序而不会出错。如何让处理程序停止在代码中以进行测试?
标签: json function go handler httplistener