```
func Socket(socketAddr string) {
fmt.Println("Launching server...", socketAddr)
// listen on all interfaces
ln, err := net.Listen("tcp", socketAddr)
if err != nil {
panic(err)
}
for {
// accept connection on port
conn, err := ln.Accept()
if err != nil {
panic(err)
}
go handleRequest(conn)
}
}
func handleRequest(conn net.Conn) {
defer conn.Close()
for {
r := bufio.NewReader(conn)
// will listen for message to process ending in newline (\n)
message, err := r.ReadString('\n')
fmt.Println(message)
if err != nil {
fmt.Println(err)
return
}
}
}
```
我使用一个socket接受数据,然后用\n切割数据的时候会有几率出现如图
![image.png](https://static.studygolang.com/171115/9bd7a4fbb0466bc11403c88ab3823501.png)
但是我写入文件的话就不会,如图
![image.png](https://static.studygolang.com/171115/a861ca230ea527544e5081411d9f8f26.png)
请问这个是什么问题?我查了一下,如果使用readline会有isPrefix这个参数,但是使用之后,发现返回的为false,也就说明没有出现阶段。。。
我开始也是认为是粘包,但是我把数据一次性输出就不会有问题,后来经过大神指点,发现是我在for里面newReader,导致bufio读取的时候顺序乱了
#13
更多评论