2 回答
TA贡献1789条经验 获得超10个赞
由于anet.Conn是一个io.Reader,您可以将其包装在中,bufio.Reader然后ReadString对该类型使用方法。您的功能将变为
func(c net.Conn) {
f := bufio.NewReader(c)
for {
ln, err := f.ReadString('\n')
if err == io.EOF {
break
} else if err != nil {
panic(err)
}
fmt.Print(ln)
}
c.Close()
}
(我不确定stdout是否在Go中同步;将行发送到在单独的goroutine中循环的共享通道上可能会更干净。)
TA贡献1836条经验 获得超3个赞
如果仅此而已,只需将套接字复制到stdout。
package main
import (
"io"
"log"
"net"
"os"
)
func main() {
srv, err := net.Listen("tcp", ":2000")
if err != nil {
log.Fatalf("Error listening: %v", err)
}
for {
conn, err := srv.Accept()
if err != nil {
log.Fatalf("Error accepting: %v", err)
}
go func(c net.Conn) {
defer c.Close()
io.Copy(os.Stdout, c)
}(conn)
}
}
- 2 回答
- 0 关注
- 256 浏览
添加回答
举报