我正在尝试在Go中构建一个简单的Web服务器。但是,启动时,只能通过curl访问响应(Hello,World!)。输入localhost:8080,127.0.0.1:8080或0.0.0.0:8080会拒绝连接(ERR_CONNECTION_REFUSED)。在地址前面添加http://似乎没有任何改变,因为前缀在尝试加载之前从网址栏中消失了。
代码如下:
package main
import (
"fmt"
"html"
"net/http"
)
func ping(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("pong"))
}
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello, %q", html.EscapeString(r.URL.Path))
})
http.HandleFunc("/hi", func(w http.ResponseWriter, r *http.Request){
fmt.Fprintf(w, "Hi")
})
http.HandleFunc("/ping", ping)
if err := http.ListenAndServe(":8080", nil); err != nil {
panic(err)
}
}
此外,netstat -tlnp的输出是:
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp6 0 0 :::5000 :::* LISTEN 4252/main
我已经阅读了一些答案,说没有给出原因就不要使用TCP6,但是我什至不知道如何阻止这种行为。
因此第二天再试一次,就可以了(如下所述)。现在,我开始探索为什么。如果找到有用的答案,我将再次发布,但是现在这是工作代码。谢谢StackOverflow社区!