首頁  >  文章  >  後端開發  >  go http.ListenAndServe 不等待連線看起來像是退出

go http.ListenAndServe 不等待連線看起來像是退出

WBOY
WBOY轉載
2024-02-14 22:12:08933瀏覽

go http.ListenAndServe 不等待连接看起来像是退出

php小編柚子在這篇文章中將為大家介紹一個有趣而常見的問題,即在使用Go語言中的http.ListenAndServe函數時,為什麼看起來像是沒有等待連線就退出了。這個問題可能會讓人困惑,但其實是由於Go語言的並發特性所造成的。在接下來的內容中,我們將詳細解釋這個問題的原因,並給出解決方案,幫助讀者更好地理解和使用Go語言中的http.ListenAndServe函數。

問題內容

我有一個簡單的應用程序,我希望它是一個等待連接的守護進程,但它看起來像不監聽,我甚至在進程列表中找不到它。

程式碼:

package main

import (
        "fmt"
        "log"
        "net/http"
)

func main() {
        fmt.Println("Start Server")
        log.Print("Start Server")
        http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
                fmt.Fprintln(w, "Hello, World! from linux")
        })
        log.Print("Going to listen")
        if err := http.ListenAndServe(":80", nil); err != err {
          log.Print("getting error")
          log.Fatal(err)
        }
        fmt.Println("End  Server")
        log.Print("End  Server")
}

編譯並執行:

xxx@xxx:~/go_test$ CGO_ENABLED=0 go build -gcflags "all=-N -l" -o ./main
    umen@umen:~/go_test$ ./main
Start Server
2023/11/15 07:40:22 Start Server
2023/11/15 07:40:22 Going to listen
End  Server
2023/11/15 07:40:22 End  Server

嘗試連線:

xxx@xxx:~$ curl http://localhost
curl: (7) Failed to connect to localhost port 80 after 0 ms: Connection refused

我在這裡缺少什麼?

更新

刪除了 Fatal,它仍然在不監聽 get 請求的情況下啟動和停止。

解決方法

log.Fatal("Going to Listen") 終止您的應用程式執行。

參考文獻:

#

以上是go http.ListenAndServe 不等待連線看起來像是退出的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除