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

2024年 2月 14日 98.0k 0

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") 终止您的应用程序执行。

参考文献:

  • https://www.php.cn/link/004881ebe3826cf16cfd124968f2a5bb

以上就是go http.ListenAndServe 不等待连接看起来像是退出的详细内容,更多请关注每日运维网(www.mryunwei.com)其它相关文章!

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论