feat(listen): 自 go-hua 迁入监听器封装

- net.Listener 统一封装与 Close 解除 Accept 阻塞, 附测试、例程与 README
This commit is contained in:
2026-09-20 12:25:35 +08:00
parent a81e467a31
commit 6904133565
4 changed files with 197 additions and 0 deletions
+47
View File
@@ -0,0 +1,47 @@
// listen 包示例:TCP 监听封装(NewListen/Accept/Close/Addr)
package main
import (
"bufio"
"fmt"
"net"
"git.zeroonesoft.cn/golib/zogo/listen"
)
func main() {
// 创建 TCP 监听(端口 0 表示由系统分配)
l, err := listen.NewListen("tcp", "127.0.0.1:0")
if err != nil {
panic(err)
}
defer l.Close()
fmt.Println("监听地址:", l.Addr())
// echo 服务
go func() {
for {
conn, err := l.Accept()
if err != nil {
return
}
go func(c net.Conn) {
defer c.Close()
scanner := bufio.NewScanner(c)
for scanner.Scan() {
fmt.Fprintf(c, "echo: %s\n", scanner.Text())
}
}(conn)
}
}()
// 客户端连接测试
conn, err := net.Dial("tcp", l.Addr().String())
if err != nil {
panic(err)
}
defer conn.Close()
fmt.Fprintln(conn, "hello go-hua")
line, _ := bufio.NewReader(conn).ReadString('\n')
fmt.Print("收到:", line)
}