저는 protobufs를 처음 접했고 현재 nats 서버에서 데이터를 읽는 클라이언트를 작성하고 있습니다. nats 서버에서 전송되는 데이터는 protobuf입니다.
제가 작성하고 있는 클라이언트는 go로 작성되었습니다. 이것은 제가 작성한 .proto 파일입니다:
으아아아게시 서버는 C#으로 작성되었으며 원본 메시지의 코드는 다음과 같습니다.
으아아아데이터를 비정렬화하려고 할 때 이 오류가 발생합니다
으아아아데이터를 구문 분석하는 방법은 다음과 같습니다.
으아아아서버에서 받은 샘플 바이트 데이터:
으아아아자세한 내용 추가:
C#이 데이터를 보내는 방법은 다음과 같습니다.
으아아아feedmessage의 구조입니다(executionreport도 이를 간접적으로 상속합니다)
으아아아이것이 serializetoarray()
작동 방식입니다:
구체적인 이유는 모르겠습니다. 그런데 제가 작성한 프로토파일이 잘못된 것 같습니다. 동일한 오류가 발생하여 여러 게시물을 검토했지만 대부분은 동일한 문제를 해결하지 못했습니다. 다른 세부정보가 필요하면 알려주시기 바랍니다.
이 문제를 해결하도록 도와주세요.
댓글에서 논의된 내용을 바탕으로 데이터 정리에 성공했습니다.
Notes:
decimal
和 guid
数据类型。 (正如 bcl.proto
에 설명된 대로 c# 관련 구현을 사용합니다. 크로스 플랫폼 코드에서는 일반적으로 이를 완전히 피해야 합니다. 폴더 구조는 다음과 같습니다.
으아아아bcl.proto:
이 파일은 github에서 복사되었습니다. com/protobuf-net/protobuf-net. 이는 .net 구현이 원본 파일에서 decimal
和 guid
을 사용하기 때문에 필요합니다.
execution.proto
으아아아프로토타입/
이 폴더의 파일은 다음 명령을 사용하여 proto 파일에서 생성됩니다.
으아아아go.mod
으아아아main.go
으아아아질문에 제공된 데이터 출력:
으아아아위 내용은 proto: 잘못된 Wire 형식 데이터를 구문 분석할 수 없습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!