php小编柚子在这篇文章中将为大家介绍一个有趣而常见的问题,即在使用Go语言中的http.ListenAndServe函数时,为什么看起来像是没有等待连接就退出了。这个问题可能会让人困惑,但其实是由于Go语言的并发特性造成的。在接下来的内容中,我们将详细解释这个问题的原因,并给出解决方案,帮助读者更好地理解和使用Go语言中的http.ListenAndServe函数。
问题内容
我有一个简单的应用程序,我希望它是一个等待连接的守护进程,但它看起来像不监听,我什至在进程列表中找不到它。
代码:
package mainimport ( "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$ ./mainStart Server2023/11/15 07:40:22 Start Server2023/11/15 07:40:22 Going to listenEnd Server2023/11/15 07:40:22 End Server
登录后复制
尝试连接:
xxx@xxx:~$ curl http://localhostcurl: (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 不等待连接看起来像是退出的详细内容,更多请关注【创想鸟】其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。
发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2483465.html