From f6df45333ee9574760b7364c29a682708cf6c461 Mon Sep 17 00:00:00 2001 From: Mohammadreza Saberi Date: Sat, 9 Dec 2023 11:52:15 +0330 Subject: [PATCH] fix: close network connection --- content/chapter 5/5.2-tcp-server-begginer.md | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/content/chapter 5/5.2-tcp-server-begginer.md b/content/chapter 5/5.2-tcp-server-begginer.md index ab7437acd..8a8790b34 100644 --- a/content/chapter 5/5.2-tcp-server-begginer.md +++ b/content/chapter 5/5.2-tcp-server-begginer.md @@ -54,7 +54,6 @@ func (s *Server) start() error { if err != nil { return err } - defer ln.Close() // مقدار دهی listener s.ln = ln // با تابع acceptLoop اتصال های جدید به سرور را مدیریت میکنیم @@ -64,6 +63,13 @@ func (s *Server) start() error { return nil } +// اینجا برای استاپ کردن سرور یک متد جدید تعریف میکنیم +func (s *Server) stop() { + if s.ln != nil { + s.ln.Close() + } +} + func (s *Server) acceptLoop() { for { // اتصال های موجود را تایید میکنیم متغییر conn را با اتصال مورد نظر مقدار دهی میکنیم @@ -104,6 +110,11 @@ func (s *Server) readLoop(conn net.Conn) { func main() { // ساخت سرور server := newServer(":3000") + + //start the server + if err := server.start(); err != nil { + log.Fetal(err) + } go func() { // در ازای هر پیام مقادیر آن را چاپ میکنیم @@ -111,9 +122,9 @@ func main() { fmt.Printf("recived new from connection(%s): %s\n", msg.from, msg.payload) } }() - - // شروع سرور - log.Fatal(server.start()) + + // Run an infinite loop to keep the program running + select {} }