1
This commit is contained in:
parent
78c774542b
commit
2f1f77a36d
@ -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)
|
||||||
}
|
}
|
||||||
|
@ -3,3 +3,7 @@ package main
|
|||||||
const (
|
const (
|
||||||
PLAYER_MGR_HANDLER_ID = 1
|
PLAYER_MGR_HANDLER_ID = 1
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
MAX_PACKET_LEN = 1024 * 64
|
||||||
|
)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user