Go 如何使用net.Conn与扫描仪解组协议?
我已经设置了一个go服务器来从客户端接收数据。在尝试解组对象时遇到问题。我这样做不对吗?它与文本配合得很好 这是我目前的代码: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
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是一个二进制协议,它不是行分隔的。