定义一个 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)
}
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.