fix: socket异常退出捕获,停止信号退出循环读取

This commit is contained in:
TsMask
2025-05-30 14:12:43 +08:00
parent 1f2a2b687d
commit 0ff3c469fc
4 changed files with 16 additions and 3 deletions

View File

@@ -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 {

View File

@@ -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:

View File

@@ -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 {

View File

@@ -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)
}