Go 如何使用net.Conn与扫描仪解组协议?

Go 如何使用net.Conn与扫描仪解组协议?,go,tcp,protocol-buffers,Go,Tcp,Protocol Buffers,我已经设置了一个go服务器来从客户端接收数据。在尝试解组对象时遇到问题。我这样做不对吗?它与文本配合得很好 这是我目前的代码: func handleConnection(conn net.Conn) { scanner := bufio.NewScanner(conn) for { ok := scanner.Scan() if !ok { break } request := &protoBuf.Request{} err

我已经设置了一个go服务器来从客户端接收数据。在尝试解组对象时遇到问题。我这样做不对吗?它与文本配合得很好

这是我目前的代码:

func handleConnection(conn net.Conn) {
scanner := bufio.NewScanner(conn)

for {
    ok := scanner.Scan()

    if !ok {
        break
    }
    request := &protoBuf.Request{}
    err := proto.Unmarshal(scanner.Bytes(), request)
    if err != nil {
        log.Fatal("unmarshaling error: ", err)
    }
}
}
错误消息:

2019/10/02 19:24:29 unmarshaling error: proto: protoBuf.Request: 
illegal tag 0 (wire type 2)

你是在模仿grpc吗?这可以通过grpc服务轻松完成。也就是说,扫描仪读取以行分隔的输入。Protobuf是一个二进制协议,它不是行分隔的。