我正在尝试Go中的一些基本聊天(服务器+客户端)的东西,所以我有一个服务器,它侦听特定端口,我有一个写入此端口的客户端。
然而,由于我是新手,我不断进行更改并且必须重新启动服务器等。每次我想停止服务器时,我一直在做'Ctrl + C',但这显然是愚蠢的,因为我必须改变每次编译时的端口号...这样做的正确方法是什么?我现在正在做
defer ln.Close()
建立连接后,在服务器的主要功能中但我猜Ctrl + C只是在没有关闭连接的情况下杀死进程?
编辑:更多信息。 我在Windows上运行cygwin。 ps显示没有旧进程,但我在任务管理器中发现了“server.exe”(我的服务器文件名为server.go)。
答案 0 :(得分:0)
除非您使用os/signal
程序包在Ctrl+C
时通知您,否则您的延期声明将无法运行。
这是一个处理SIGINT(Ctrl + C)以干净地退出程序的示例。
func main() {
done := make(chan os.Signal)
go signal.Notify(done, syscall.SIGINT)
go func() {
// your tcp server goes here along with the defer to clean up your server
}()
<-done
// exit cleanly
}