2012-03-09 4 views
4

웹캠의 이미지를 동일한 PC의 C# 응용 프로그램에 실시간으로 보내야하는 C++ 응용 프로그램이 있습니다. C++ 코드는 C# 코드에서 호출 할 수 없으므로 이미지를 보내려면 명명 된 파이프를 통해 통신을 구현해야합니다.Windows에서 명명 된 파이프 작업 (C++/C#)

나는 이전에 통신 프로그래밍을 해 본 적이 없으며이 문제에 접근하는 방법을 궁금해하고있었습니다.

내 첫 번째 생각은 별도의 스레드에서 명명 된 파이프 서버를 만들도록 C++ 응용 프로그램을 만드는 것이 었습니다. 생성 된 후에는 이미지를 보낼 수있을 때까지 스레드가 계속 대기합니다. 그 시점에서 그것은 이미지를 보낼 것입니다.

마찬가지로 C# 응용 프로그램은 클라이언트 역할을하는 새 스레드를 만듭니다. 서버에 연결하여 이미지를 사용할 수있을 때까지 계속 반복합니다. 그 시점에서 이미지를 수신하여 주 스레드가 액세스 할 수있는 대기열에 저장합니다.

의미가 있습니까? 이것이 최선의 접근 방법입니까?

+1

좋은 질문이지만 프로그래머에 속한다고 생각합니다 .stackexchange.com. 이것은 일반적으로 여기에 속하는 개념보다 개념적입니다. – NotMe

+0

이러한 이미지를 영구적으로 저장해야한다면 메모리 맵 파일이 더 나은 방법 일 것입니다. – Flot2011

+0

C++ 응용 프로그램의 각 프레임에서 C# 응용 프로그램에서 읽을 수있는 명명 된 메모리 매핑 된 파일에 전체 이미지를 저장하겠습니까? 위와 같이 메모리 매핑 파일에 대한 읽기 및 쓰기 처리를 위해 새 스레드를 각 측면에 만들어야합니까? – Jkh2

답변

0

여기서 COM을 사용하는 개념은 두 번째입니다. C#에서는 COM 객체를 솔직하게 씁니다. C++보다 더 쉽기 때문입니다. C#에는 뛰어난 COM 상호 운용성이 있습니다. http://msdn.microsoft.com/en-us/library/aa645712%28v=vs.71%29.aspx을 참조하십시오. 필자는 Python (우리의 빌드 시스템)이 호출 할 수있는 유사한 MS VSS COM 인터페이스를 작성하여 다른 공급 업체가 노출 한 C# .NET 인터페이스와 인터페이스했습니다. COM이 낮았 기 때문에 JScript, C++ 등에서도 호출 할 수있었습니다.

컴퓨터 간 및/또는 Windows 보안이 필요하지 않는 한 명명 된 파이프는 사용하지 않는 것이 좋습니다. 실제로 개체를 가로 질러 전송하는 데 사용할 수있는 크기/속도에 의해 지시, 아무것도 될 수 있습니다.