This commit is contained in:
aozhiwei 2023-08-10 23:25:47 +08:00
parent 78c774542b
commit 2f1f77a36d
2 changed files with 66 additions and 9 deletions

View File

@ -59,22 +59,71 @@ func (this *WSPListener_) accept() {
*/ */
func (this *WSPListener_) socketRead(conn net.Conn) { func (this *WSPListener_) socketRead(conn net.Conn) {
buf := make([]byte, 1024 * 64) buf := make([]byte, 1024 * 64)
recvBufLen := 0
recvBuf := make([]byte, 1024 * 64 * 2)
for {
bufLen, err := conn.Read(buf)
if err == nil && bufLen > 0 {
alreadyReadBytes := 0
for {
{
readBytes := bufLen - alreadyReadBytes
if readBytes > MAX_PACKET_LEN - recvBufLen {
readBytes = MAX_PACKET_LEN - recvBufLen
}
if readBytes > 0 {
copy(recvBuf[recvBufLen:],
buf[alreadyReadBytes:alreadyReadBytes + readBytes])
recvBufLen += readBytes
alreadyReadBytes += readBytes
}
}
offset := 0
prevOffset := 0
for {
prevOffset = offset
this.decodePacket(&recvBuf, &offset, recvBufLen)
if prevOffset > offset || offset > recvBufLen {
break
}
}
if offset > 0 && offset < recvBufLen {
}
recvBufLen -= offset
if recvBufLen >= MAX_PACKET_LEN {
panic("recv max packet")
}
if alreadyReadBytes >= bufLen {
break
}
}
}
}
/*
buf := make([]byte, 1024 * 64)
recvBufLen := 0
recvBuf := make([]byte, 1024 * 64 * 2) recvBuf := make([]byte, 1024 * 64 * 2)
offset := 0 offset := 0
for { for {
bufLen, err := conn.Read(buf) bufLen, err := conn.Read(buf)
if err == nil && bufLen > 0 { if err == nil && bufLen > 0 {
copy(buf[:bufLen], recvBuf[offset:]) copy(recvBuf[offset:], buf[:bufLen])
recvBufLen += bufLen
warning := false warning := false
for bufLen - offset >= 12 { for recvBufLen - offset >= 12 {
packLen := int(recvBuf[0]) >> 16 + int(recvBuf[1]) packLen := int(recvBuf[0]) + int(recvBuf[1] << 16)
if recvBuf[8] == 'K' && recvBuf[9] == 'S' { if recvBuf[8] == 'K' && recvBuf[9] == 'S' {
if bufLen - offset < 12 + packLen { if recvBufLen - offset < 12 + packLen {
continue continue
} }
hdr := new(q5.MsgHdr) hdr := new(q5.MsgHdr)
hdr.MsgId = int(recvBuf[0]) >> 16 + int(recvBuf[1]) hdr.MsgId = int(recvBuf[2]) + int(recvBuf[3] << 16)
hdr.SeqId = int(recvBuf[0]) >> 16 + int(recvBuf[1]) //hdr.SeqId = int(recvBuf[4]) + int(recvBuf[5] )
offset += 12 + packLen offset += 12 + packLen
} else { } else {
warning = true warning = true
@ -82,12 +131,16 @@ func (this *WSPListener_) socketRead(conn net.Conn) {
continue continue
} }
} }
copy(recvBuf[:offset], recvBuf[:]) copy(recvBuf[:], recvBuf[:offset])
if warning { if warning {
f5.SysLog().Warning("收到client非法数据包") f5.SysLog().Warning("收到client非法数据包")
} }
} }
} }*/
}
func (this *WSPListener_) decodePacket(recvBuf *[]byte, offset *int, recvBufLen int) {
f5.SysLog().Warning("收到client非法数据包")
} }
func (this *WSPListener_) parseNetPkt() { func (this *WSPListener_) parseNetPkt() {
@ -128,6 +181,6 @@ func (this *WSPListener_) sendProxyMsg(conn net.Conn, socketHandle uint16, msg p
buff[3] = byte(msgId >> 16) buff[3] = byte(msgId >> 16)
buff[9] = byte(socketHandle & 0xFF) buff[9] = byte(socketHandle & 0xFF)
buff[10] = byte(socketHandle >> 16) buff[10] = byte(socketHandle >> 16)
copy(msgData[:], buff[12:]) copy(buff[12:], msgData[:])
conn.Write(buff) conn.Write(buff)
} }

View File

@ -3,3 +3,7 @@ package main
const ( const (
PLAYER_MGR_HANDLER_ID = 1 PLAYER_MGR_HANDLER_ID = 1
) )
const (
MAX_PACKET_LEN = 1024 * 64
)