package main import ( "bufio" "bytes" "encoding/binary" "github.com/golang/protobuf/proto" "net" "pro2d/protos/pb" "pro2d/src/components/logger" net2 "pro2d/src/components/net" "time" ) func main() { head := &net2.Head{ Length: 0, Cmd: int32(pb.ProtoCode_LoginReq), ErrCode: 0, PreField: 0, } loginReq := &pb.LoginReq{ Uid: "141815055745814528", Device: "123123", } l, _ :=proto.Marshal(loginReq) b := net2.MsgPkg{ Head: head, Body: l, } head.Length = int32(16 + len(b.Body)) buf := &bytes.Buffer{} err := binary.Write(buf, binary.BigEndian, head) if err != nil { logger.Error("err: %v, head: %v", err, head) return } logger.Debug("head: %v", head) err = binary.Write(buf, binary.BigEndian, b.Body) if err != nil { logger.Error("err: %v, msg: %v", err, b.Body) return } client, err := net.Dial("tcp", "localhost:8849") if err != nil { logger.Error(err) return } rd := bufio.NewReadWriter(bufio.NewReader(client), bufio.NewWriter(client)) for { b1 := make([]byte, 1024) n, err := rd.Write(buf.Bytes()) if err != nil { logger.Error(err) return } rd.Flush() logger.Debug("write:n: %d, msg: %s", n, buf.Bytes()) n, err = rd.Read(b1) if err != nil { logger.Error(err) return } logger.Debug("recv: %s, n: %d\n", b1, n) time.Sleep(5*time.Second) } }