文档 / 教程
14 · TCP echo
listen_on / accept / 每连接 xu handle。
ln := net.listen_on("tcp", "127.0.0.1:19000") or (err) { << 1 }
c := ln.accept() or (err) { -> }
xu handle(c)另一终端:printf ping | nc 127.0.0.1 19000。
Windows 上 TCP dial/listen 返回错误占位,不是静默成功。
源码
@main
#net
// TCP echo。
// printf ping | nc 127.0.0.1 19000
// UDP 见 15udp_echo。
fn handle(c net.Conn) {
mut conn := c
buf := conn.read(4096) or (err) {
conn.close() or (e2) { << }
<<
}
if buf.len == 0 {
conn.close() or (err) { << }
<<
}
conn.write(&buf) or (err) { << }
conn.close() or (err) { << }
}
fn main() int {
ln := net.listen_on("tcp", "127.0.0.1:19000") or (err) {
println(err.msg())
<< 1
}
println("tcp://127.0.0.1:19000 echo")
mut running := true
while running {
c := ln.accept() or (err) {
->
}
xu handle(c)
}
<< 0
}
在独立的 examples 仓库根执行;源码位于 examples/。