2011-10-26 3 views
1

외부에 소켓 통신이 가능한 Linux에 C++ 하드웨어 제어 소프트웨어가 있습니다 .WCF를 통해 해당 C++ 소프트웨어에 명령을 보내려면 C# 응용 프로그램을 Windows에 추가하고 있습니다 (Net.TCP) (.Net 3.5 또는 4).C#에서 WCF를 통해 C++로 명령을 보내십시오.

정의 된 명령/프로토콜에는 헤더와 데이터가 들어 있습니다.

프로토콜 구조 내에 일부 char[] 필드가 있습니다.

C#의 char은 2 바이트이지만이 프로토콜에 정의 된 char은 1 바이트 char입니다.

어떻게 호환 가능합니까? 기존 유틸리티 라이브러리가 나를 위해 변환을 수행 할 수 있습니까?

+0

'net.tcp'는 두 개의 .NET 프로그램간에 만 작동합니다. interop 바인딩이 아닙니다. –

+0

이 프로젝트의 누군가가 고객의 GUI가 C# 응용 프로그램이므로 WCF를 사용하려고합니다. 따라서이 WCF는 고객의 GUI와 기존의 제어 소프트웨어 (소켓이있는 C++) 간의 미들웨어입니다. 잘못된 프로토콜을 선택할 수 있도록 WCF를 배우고 있습니까? – 5YrsLaterDBA

+0

간단한 소켓으로 변환되는 표준 WCF 프로토콜은 없습니다. 그러나 하나를 만들 수 있습니다. 그러나 소켓을 사용해야하는 경우 .NET 소켓 클래스를 사용하는 것이 좋습니다. –

답변

2

WCF의 소켓이 예측할 수 없으며 플랫폼 간 호환이 아니기 때문에 .NET에서 일반 소켓을 사용하는 것이 훨씬 쉽습니다. C#에서 문자열을 C++ 버퍼로 변환하려면 Encoding.ASCII.GetBytes (string)를 사용하십시오.

+1

대상 컨트롤러가 Intel이 아닌 경우 big/little endian 문제도주의하십시오. –

관련 문제