定义一个 buffer 来临时存放消息
从 conn 里面读取固定字节大小内容,判断当前内容里面有没有分隔符
如果没有找到分隔符,把当前内容追加到 buffer 里面,然后重复第 2 步
如果找到分隔符,把当前内容里面分隔符之前的内容追加到 buffer 后输出
然后重置 buffer ,把分隔符之后的内容追加到 buffer ,重复第 2 步
把分隔符之后的内容追加到 buffer 这个环节我不知道处理
package main
import (
"bufio"
"io"
"log"
"net"
)
func main() {
listener, err := net.Listen("tcp", "127.0.0.1:8866")
if err != nil {
log.Fatal(err)
}
defer listener.Close()
for {
con, err := listener.Accept()
if err != nil {
log.Println(err)
continue
}
defer con.Close()
reader := bufio.NewReader(con)
for {
data, err := reader.ReadSlice('\n')
if err != nil {
if err != io.EOF {
// 分隔符之后
} else {
//读取结束
break
}
}
log.Println("received msg", len(data), "bytes:", string(data))
}
}
}
package main
import (
"log"
"net"
"time"
)
func main() {
conn, err := net.Dial("tcp", "127.0.0.1:8866")
if err != nil {
log.Fatal(err)
}
defer conn.Close()
_, err = conn.Write([]byte("bbbb\ndfdfdfdfd"))
if err != nil {
panic(err)
}
time.Sleep(time.Second)
}