mirror of
https://github.com/fumiama/WireGold.git
synced 2026-06-13 05:31:08 +08:00
fix 分片
This commit is contained in:
@@ -75,20 +75,20 @@ func (l *Link) Read() *head.Packet {
|
|||||||
|
|
||||||
// Write 向 peer 发包
|
// Write 向 peer 发包
|
||||||
func (l *Link) Write(p *head.Packet, istransfer bool) (n int, err error) {
|
func (l *Link) Write(p *head.Packet, istransfer bool) (n int, err error) {
|
||||||
if len(p.Data) <= 32768 {
|
if len(p.Data) <= (65536 - 64) {
|
||||||
return l.write(p, istransfer)
|
return l.write(p, istransfer)
|
||||||
}
|
}
|
||||||
data := p.Data
|
data := p.Data
|
||||||
offset := 0
|
offset := 0
|
||||||
for len(data) > 32768 {
|
for len(data) > (65536 - 64) {
|
||||||
packet := *p
|
packet := *p
|
||||||
packet.Data = data[offset*32768 : (offset+1)*32768]
|
packet.Data = data[offset*(65536-64) : (offset+1)*(65536-64)]
|
||||||
i, err := l.write(&packet, istransfer)
|
i, err := l.write(&packet, istransfer)
|
||||||
n += i
|
n += i
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return n, err
|
return n, err
|
||||||
}
|
}
|
||||||
data = data[(offset+1)*32768:]
|
data = data[(offset+1)*(65536-64):]
|
||||||
}
|
}
|
||||||
return n, nil
|
return n, nil
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user