C#
2015.07.16 20:28
Google Protocol Buffer 응용방법 (리눅스 C++ & 윈도우 C#간 통신방법)
다물칸 주소복사
조회 수 384 추천 수 0 댓글 0
구분 | 팁&트릭 |
---|---|
출처 | 내가작성 |
개요.
2008년도에 구글에서 소개된 것으로 이기종 언어간 데이터를 교환할 때 사용하는 프로토콜이다.
기술 히스토리
TCP/IP를 이용한 메시지 교환방식 > RPC (Remote Procedure Call) > RPC-XML > SOAP > REST-Json > Protocol Protocol (2008) > GRPC (2015)
로 파악했는데 틀린내용이면 답변 부탁드려요.
사용방법
1. Protocol Buffer 설치
Nuget에서 Protobuf-net 를 설치한다.
2. 클래스 생성
아래 형태대로 생성한다.
[ProtoContract] public class MST_AC_LGIN_INPUT { [ProtoMember(1)] public string UserID { get; set; } [ProtoMember(2)] public string UserPassword { get; set; } public MST_AC_LGIN_INPUT() { UserID = string.Empty; UserPassword = string.Empty; } }
이를 Serialze하면
package {네임스페이스};
message MST_AC_LGIN_INPUT {
optional string UserID = 1;
optional string UserPassword = 2;
}
출처: https://csharphardcoreprogramming.wordpress.com/2014/01/31/protocol-buffers-part-3-advanced-tcp-networking/
- ProtoBuf-Net을 이용해 Network Stream으로 송수신할 수 있는 C#예제
위 기반으로 C#끼리는 엄청 잘된다.
그런데 원래 하려고 했던 리눅스의 C++과 윈도우의 C#이 안되는 거다.
위 출처 소스를 보다보면 ProtoBuf.prefixStyle를 설정하는 부분이 있는데
리눅스로부터 받고 보내는 부분은 Base128로 설정해야 한다는 것.
추측으로 윈도우계열은 Fixed32가 정상이지만 리눅스와의 통신은 Base128을 기억하자.
ProtoBuf.PrefixStyle.Base128