-
Notifications
You must be signed in to change notification settings - Fork 770
Open
Description
kcp.go 中的Send方法,通过count处理frg
if len(buffer) <= int(kcp.mss) {
count = 1
} else {
count = (len(buffer) + int(kcp.mss) - 1) / int(kcp.mss)
}
但是在 sess.go 的 WriteBuffers 中,进行了mss的比较和分片,然后才调用了 Send,保证每次Send的都不超过 mss
for _, b := range v {
n += len(b)
// handle each slice for packet splitting
for {
if len(b) <= int(s.kcp.mss) {
s.kcp.Send(b)
break
} else {
s.kcp.Send(b[:s.kcp.mss])
b = b[s.kcp.mss:]
}
}
}
因此在直接写入一个超过mss的包期望分片的时候,它不会按照预期工作,以至客户端在读取的时候出现错误。
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels