package main import ( "bufio" "bytes" "encoding/binary" "github.com/golang/protobuf/proto" "net" "pro2d/common/components" "pro2d/common/logger" "pro2d/pb" "time" ) func main() { head := &components.PBHead{ Length: 0, Cmd: uint32(pb.ProtoCode_LoginReq), ErrCode: 0, PreField: 0, } loginReq := &pb.LoginReq{ Uid: "141815055745814528", Device: "123123", } l, _ :=proto.Marshal(loginReq) b := components.PBMessage{ Head: head, Body: l, } head.Length = uint32(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:8850") 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(1*time.Second) } }