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) {
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)
offset := 0
for {
bufLen, err := conn.Read(buf)
if err == nil && bufLen > 0 {
copy(buf[:bufLen], recvBuf[offset:])
copy(recvBuf[offset:], buf[:bufLen])
recvBufLen += bufLen
warning := false
for bufLen - offset >= 12 {
packLen := int(recvBuf[0]) >> 16 + int(recvBuf[1])
for recvBufLen - offset >= 12 {
packLen := int(recvBuf[0]) + int(recvBuf[1] << 16)
if recvBuf[8] == 'K' && recvBuf[9] == 'S' {
if bufLen - offset < 12 + packLen {
if recvBufLen - offset < 12 + packLen {
continue
}
hdr := new(q5.MsgHdr)
hdr.MsgId = int(recvBuf[0]) >> 16 + int(recvBuf[1])
hdr.SeqId = int(recvBuf[0]) >> 16 + int(recvBuf[1])
hdr.MsgId = int(recvBuf[2]) + int(recvBuf[3] << 16)
//hdr.SeqId = int(recvBuf[4]) + int(recvBuf[5] )
offset += 12 + packLen
} else {
warning = true
@ -82,12 +131,16 @@ func (this *WSPListener_) socketRead(conn net.Conn) {
continue
}
}
copy(recvBuf[:offset], recvBuf[:])
copy(recvBuf[:], recvBuf[:offset])
if warning {
f5.SysLog().Warning("收到client非法数据包")
}
}
}*/
}
func (this *WSPListener_) decodePacket(recvBuf *[]byte, offset *int, recvBufLen int) {
f5.SysLog().Warning("收到client非法数据包")
}
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[9] = byte(socketHandle & 0xFF)
buff[10] = byte(socketHandle >> 16)
copy(msgData[:], buff[12:])
copy(buff[12:], msgData[:])
conn.Write(buff)
}

View File

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