英文:
Golang port blocking (?) using http.ListenAndServe
问题
我有一个简单的golang程序,它监听一个端口上的活动,然后执行一个名为testFunc的函数。
func main() {
http.HandleFunc("/test", testFunc)
http.ListenAndServe(":1337", nil)
}
当我构建并运行这个程序,并访问http://localhost:1337/test时,它能正常工作。
但是当我终止程序并尝试再次运行时,程序立即终止,没有显示任何错误输出。
当我将端口更改为例如1338时,它第一次能正常工作,但之后每次都失败。有什么想法吗?
英文:
I have a simple golang program which listens for activity on a port before executing a function called testFunc
func main() {
http.HandleFunc("/test", testFunc)
http.ListenAndServe(":1337", nil)
}
When I build this program, run it and go to http://localhost:1337/test, it works fine.
When I terminate the program and try and run it again, the program instantly terminates showing no error output.
When I then change the port to 1338 for example, it works the first time, then fails each time after. Any ideas?
答案1
得分: 2
端口很可能正在使用中。捕获错误将提供更多详细信息。
如果 err := http.ListenAndServe(":1337", nil);err != nil {
log.Fatal("ListenAndServe: ", err)
}
英文:
The port is most likely in use. Catching the error will give you more details.
if err := http.ListenAndServe(":1337", nil);err != nil {
log.Fatal("ListenAndServe: ", err)
}
答案2
得分: 1
好的,以下是翻译好的内容:
好吧,事实证明错误是我愚蠢的错误。我今天从使用PC切换到Mac,没有意识到Ctrl+C是终止当前命令,而不是Ctrl+z,后者只是返回到shell...因此进程仍在运行并相互阻塞。
英文:
Ok turns out the error was my silly mistake. I have today switched from using a PC to Mac and didn't realise that Ctrl+C killed the current command instead of Ctrl+z which simply returns to shell... Therefore the processes were still running and blocking each other
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论