From 0ff3c469fcab0fcafbc6bcb8a044df81d231bac6 Mon Sep 17 00:00:00 2001 From: TsMask <340112800@qq.com> Date: Fri, 30 May 2025 14:12:43 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20socket=E5=BC=82=E5=B8=B8=E9=80=80?= =?UTF-8?q?=E5=87=BA=E6=8D=95=E8=8E=B7=EF=BC=8C=E5=81=9C=E6=AD=A2=E4=BF=A1?= =?UTF-8?q?=E5=8F=B7=E9=80=80=E5=87=BA=E5=BE=AA=E7=8E=AF=E8=AF=BB=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/framework/socket/tcp_client.go | 2 +- src/framework/socket/tcp_server.go | 8 +++++++- src/framework/socket/udp_client.go | 2 +- src/framework/socket/udp_server.go | 7 +++++++ 4 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/framework/socket/tcp_client.go b/src/framework/socket/tcp_client.go index fb8899b5..05935f29 100644 --- a/src/framework/socket/tcp_client.go +++ b/src/framework/socket/tcp_client.go @@ -27,7 +27,7 @@ func (c *ConnTCP) New() (*ConnTCP, error) { proto = "tcp6" c.Addr = fmt.Sprintf("[%s]", c.Addr) } - address := fmt.Sprintf("%s:%d", c.Addr, c.Port) + address := net.JoinHostPort(c.Addr, fmt.Sprint(c.Port)) // 默认等待5s if c.DialTimeOut == 0 { diff --git a/src/framework/socket/tcp_server.go b/src/framework/socket/tcp_server.go index 0957438f..755b41c3 100644 --- a/src/framework/socket/tcp_server.go +++ b/src/framework/socket/tcp_server.go @@ -57,8 +57,14 @@ func (s *SocketTCP) Resolve(callback func(conn *net.Conn, err error)) { callback(nil, fmt.Errorf("tcp service not created")) return } - listener := *s.Listener + defer func() { + if err := recover(); err != nil { + callback(nil, fmt.Errorf("tcp service panic err")) + } + }() + + listener := *s.Listener for { select { case <-s.StopChan: diff --git a/src/framework/socket/udp_client.go b/src/framework/socket/udp_client.go index ecaa4864..9c77aade 100644 --- a/src/framework/socket/udp_client.go +++ b/src/framework/socket/udp_client.go @@ -27,7 +27,7 @@ func (c *ConnUDP) New() (*ConnUDP, error) { proto = "udp6" c.Addr = fmt.Sprintf("[%s]", c.Addr) } - address := fmt.Sprintf("%s:%d", c.Addr, c.Port) + address := net.JoinHostPort(c.Addr, fmt.Sprint(c.Port)) // 默认等待5s if c.DialTimeOut == 0 { diff --git a/src/framework/socket/udp_server.go b/src/framework/socket/udp_server.go index d93001b0..1c9f8eaa 100644 --- a/src/framework/socket/udp_server.go +++ b/src/framework/socket/udp_server.go @@ -56,10 +56,17 @@ func (s *SocketUDP) Resolve(callback func(*net.UDPConn, error)) { return } + defer func() { + if err := recover(); err != nil { + callback(nil, fmt.Errorf("udp service panic err")) + } + }() + for { select { case <-s.StopChan: callback(nil, fmt.Errorf("udp service not created")) + return default: callback(s.Conn, nil) }