|
@@ -2,6 +2,7 @@
|
|
|
package util
|
|
|
|
|
|
import (
|
|
|
+ "bytes"
|
|
|
"crypto/tls"
|
|
|
"encoding/binary"
|
|
|
"errors"
|
|
@@ -145,6 +146,7 @@ func (client *Client) baseEventHandle(msg *Packet) {
|
|
|
event := int(msg.Event)
|
|
|
switch event {
|
|
|
case EVENT_REQUEST_HEARTBEAT: //请求的心跳,回应心跳请求
|
|
|
+ Log.Info.Println("服务端请求心跳")
|
|
|
client.WriteObj("", "", EVENT_RETURN_HEARTBEAT, SENDTO_TYPE_P2P, msg.Raw)
|
|
|
client.lastCheckHeart = time.Now().Unix()
|
|
|
case EVENT_RETURN: //回调处理,一般用于同步操作
|
|
@@ -163,12 +165,16 @@ func (client *Client) baseEventHandle(msg *Packet) {
|
|
|
//从套接字读取数据
|
|
|
func (client *Client) read4socket() (*Packet, error) {
|
|
|
defer Catch()
|
|
|
- buffer := make([]byte, 4)
|
|
|
+ buffer := make([]byte, 8)
|
|
|
if _, err := io.ReadFull(client.conn, buffer); err != nil {
|
|
|
Log.Debug.Println("读取包头失败", err)
|
|
|
return nil, errors.New("read packet error")
|
|
|
}
|
|
|
- size := int32(binary.BigEndian.Uint32(buffer))
|
|
|
+ if bytes.Compare(buffer[:4], PACKET_HEAD) != 0 {
|
|
|
+ Log.Debug.Println("包头校验失败")
|
|
|
+ return nil, errors.New("read packet head error")
|
|
|
+ }
|
|
|
+ size := int32(binary.BigEndian.Uint32(buffer[4:]))
|
|
|
if size < PACKET_MIN_LEN || size > PACKET_MAX_LEN {
|
|
|
Log.Debug.Println("数据包长度越界[", size, "]")
|
|
|
return nil, errors.New("read packet error")
|