Home > Backend Development > Golang > go http.ListenAndServe not waiting for connection looks like exiting

go http.ListenAndServe not waiting for connection looks like exiting

WBOY
Release: 2024-02-14 22:12:08
forward
973 people have browsed it

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

php editor Youzi will introduce you to an interesting and common question in this article, that is, when using the http.ListenAndServe function in the Go language, why does it look like Exited without waiting for connection. This question may be confusing, but it is actually caused by the concurrency characteristics of the Go language. In the following content, we will explain the cause of this problem in detail and give solutions to help readers better understand and use the http.ListenAndServe function in Go language.

Question content

I have a simple application and I want it to be a daemon waiting for connections but it looks like it's not listening and I can't even find it in the process list to it.

Code:

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")
}
Copy after login

Compile and run:

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
Copy after login

Try to connect:

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

What am I missing here?

renew

Removed Fatal, which still starts and stops without listening for get requests.

Workaround

log.Fatal("Going to Listen") Terminate your application execution.

references:

The above is the detailed content of go http.ListenAndServe not waiting for connection looks like exiting. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:stackoverflow.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template