```
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,也就说明没有出现阶段。。。
我是在获取接受的时候,将conn里面所有的数据一次性写入,所以不会出现问题,我这里出问题是因为我不停在newReader导致bufio的读取顺序乱了
#12
更多评论