golang http helloworld没有阻止

时间:2014-08-04 15:07:52

标签: http go

我的代码与gowiki

中的代码相同
package main

import (
    "fmt"
    "net/http"
)

func handler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "Hi there, I love %s!", r.URL.Path[1:])
}

func main() {
    http.HandleFunc("/", handler)
    http.ListenAndServe(":8080", nil)
}

但是,在我构建并运行此程序后,它会立即退出而不会阻止,因此当我尝试从Chrome访问http://localhost:8080/monkey时,我没有得到任何响应。

环境:Ubuntu 14(在Windows7上的VirtualBox中)

为什么?

3 个答案:

答案 0 :(得分:16)

检查从ListenAndServe

返回的错误
func main() {
    http.HandleFunc("/", handler)
    fmt.Println(http.ListenAndServe(":8080", nil))
}

答案 1 :(得分:4)

http.ListenAndServe函数返回符合error接口的对象。如果调用没有阻塞,那肯定意味着发生了某种错误。最受欢迎的是:

  • 已经有另一个进程正在侦听该端口
  • 您的用户无权在端口80800.0.0.0接口
  • 上绑定套接字

答案 2 :(得分:0)

就我而言,这是一个permission denied错误。使用sudo就像是一种魅力。

sudo go run filename.go

sudo filename