From 0913731a5f381be02bfafbabddd32446361dbecd Mon Sep 17 00:00:00 2001
From: liuxiaolong <liuxiaolong@aiotlink.com>
Date: 星期一, 19 十月 2020 19:10:30 +0800
Subject: [PATCH] add members clear
---
transport.go | 39 ++++++++++++++++++++++++++++-----------
1 files changed, 28 insertions(+), 11 deletions(-)
diff --git a/transport.go b/transport.go
index c7032ba..e14ea10 100644
--- a/transport.go
+++ b/transport.go
@@ -2,6 +2,10 @@
import (
"basic.com/valib/logger.git"
+ "bufio"
+ "bytes"
+ "encoding/binary"
+ "io"
"net"
"strconv"
)
@@ -16,7 +20,12 @@
defer conn.Close()
//鍙戦��
- _, err = conn.Write(sendBuf)
+ sizeBuf := make([]byte,4)
+ var buf bytes.Buffer
+ binary.BigEndian.PutUint32(sizeBuf,uint32(len(sendBuf)))
+ buf.Write(sizeBuf)
+ buf.Write(sendBuf)
+ _, err = conn.Write(buf.Bytes())
if err != nil {
logger.Debug("conn.Write err", err)
return err
@@ -50,17 +59,25 @@
func readStream(conn net.Conn) {
defer conn.Close()
- data := make([]byte,0)
- buf := make([]byte, 4096)
- for {
- n,err :=conn.Read(buf)
- if n == 0{
- break
+ var data []byte
+ var reader io.Reader = bufio.NewReader(conn)
+ sizeBuf :=make([]byte,4)
+ if _,err := reader.Read(sizeBuf[:]);err !=nil {
+ logger.Debug("read tcpStream msg length err:",err)
+ } else {
+ var msgLen uint32
+ binary.Read(bytes.NewBuffer(sizeBuf),binary.BigEndian,&msgLen)
+ dataLen := int(msgLen)
+ logger.Debug("read tcpStream msg lenth:",dataLen)
+ if dataLen >0 {
+ data =make([]byte, dataLen)
+ n,err := io.ReadAtLeast(reader, data, dataLen)
+ if err ==nil {
+ logger.Debug("io.ReadAtLeast n:",n)
+ } else {
+ logger.Debug("io.readAtLeast err:",err)
+ }
}
- if err !=nil {
- return
- }
- data = append(data,buf...)
}
QueryTcpResponseChan <- data
}
\ No newline at end of file
--
Gitblit v1.8.0