Home >Backend Development >Golang >go http.ListenAndServe not waiting for connection looks like exiting
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.
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") }
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
Try to connect:
xxx@xxx:~$ curl http://localhost curl: (7) Failed to connect to localhost port 80 after 0 ms: Connection refused
What am I missing here?
Removed Fatal, which still starts and stops without listening for get requests.
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!