```
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,也就说明没有出现阶段。。。
首先你并没有描述清楚你的问题,但但从第一张图来看的话,**‘属于TCP沾包/粘包问题可能性比加大’**,缺少数据是由于解析截断\n之后,在\n之后的数据丢掉了。
#8
更多评论