listen
标准库 net.Listener 的简单封装,提供统一的监听器接口与关闭语义。
迁移自 go-hua/listen,代码保持原样。
用法
import "git.zeroonesoft.cn/golib/zogo/listen"
l, err := listen.NewListen("tcp", ":9000")
if err != nil { ... }
defer l.Close()
for {
c, err := l.Accept() // Close 后 Accept 立即解除阻塞返回错误
if err != nil { break }
go handle(c)
}
完整可运行例程:examples/listen/main.go
注意
Close后阻塞中的Accept会立即返回错误,无需额外唤醒逻辑。- 新代码若无需扩展点,直接用标准库
net.Listen亦可。