Receivebag := make([]byte, 1500) //数据包接收区
k, err := conn.Read(Receivebag)
socket 通讯中接收到的数据包怎么会出现异常呢?比如说 发送端发送的是 0x01 0x02 0x03 0x04
但是我接收的时候有时候接受到的某个数据包最后一个字节会出现异常,我接收到的数据变成了
0x01 0x02 0x03 0x?? 每次出现这种问题的时候都是最后一个字节异常了,百思不得其解为什么会这样,求指教
谢谢@polaris
listen, _ := net.Listen("tcp", ":11111")
for {
conn, er := listen.Accept()
if er != nil {
continue
}
go func() {
rw := bufio.NewReader(conn)
for {
Receivebag := make([]byte, 1500) //数据包接收区
k, err := rw.Read(Receivebag)
if k == 0 || err != nil {
conn.Close() //关闭此链接
return
}
v, ok := buffermap[conn] //判断缓冲区map中存不存在此连接
if ok { //存在
v = append(v, Receivebag[0:k]...)
buffermap[conn] = v
} else {
buffermap[conn] = Receivebag[0:k] //这是此连接的第一个数据包
}
Receivebag = nil
handleStickpackage(conn) //处理粘包解包
}
}()
}
主要socket处理的代码,谢谢啦,帮忙看下
#4
更多评论