Rumah  >  Artikel  >  pembangunan bahagian belakang  >  pergi http.ListenAndServe tidak menunggu sambungan kelihatan seperti keluar

pergi http.ListenAndServe tidak menunggu sambungan kelihatan seperti keluar

WBOY
WBOYke hadapan
2024-02-14 22:12:08874semak imbas

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

editor php Youzi akan memperkenalkan anda kepada masalah yang menarik dan biasa dalam artikel ini, iaitu, apabila menggunakan fungsi http.ListenAndServe dalam bahasa Go, mengapa ia seolah-olah keluar tanpa menunggu sambungan. Soalan ini mungkin mengelirukan, tetapi ia sebenarnya disebabkan oleh ciri konkurensi bahasa Go. Dalam kandungan berikut, kami akan menerangkan punca masalah ini secara terperinci dan memberikan penyelesaian untuk membantu pembaca lebih memahami dan menggunakan fungsi http.ListenAndServe dalam bahasa Go.

Kandungan soalan

Saya mempunyai aplikasi mudah dan saya mahu ia menjadi daemon yang menunggu sambungan, tetapi nampaknya ia tidak mendengar dan saya tidak dapat mencarinya dalam senarai proses.

Kod:

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")
}

Kompil dan jalankan:

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

Cuba sambung:

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

Apa yang saya hilang di sini?

Kemas kini

Dibuang Fatal, yang masih bermula dan berhenti tanpa mendengar permintaan mendapatkan.

Penyelesaian

log.Fatal("Going to Listen") Tamatkan pelaksanaan permohonan anda.

Rujukan:

Atas ialah kandungan terperinci pergi http.ListenAndServe tidak menunggu sambungan kelihatan seperti keluar. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam