Работа с именованными каналами в Windows (C ++ / C #) - PullRequest
4 голосов
/ 09 марта 2012

У меня есть приложение C ++, которое должно отправлять изображения с веб-камеры в режиме реального времени в приложение C # на том же ПК. Код C ++ не может быть вызван из кода C #, поэтому мне нужно реализовать связь через именованные каналы для отправки по изображениям.

Я никогда раньше не занимался коммуникационным программированием, и мне было интересно, как решить эту проблему.

Сначала я подумал о том, чтобы приложение C ++ создало именованный сервер каналов в отдельном потоке, после создания поток будет непрерывно ждать, пока изображение станет доступным для отправки. В этот момент он отправит изображение поверх.

Точно так же приложение C # будет создавать новый поток, который действует как клиент. Он будет подключаться к серверу и работать непрерывно, пока изображение не станет доступным. В этот момент он получит изображение и сохранит его в очереди, к которой имеет доступ основной поток.

Имеет ли это смысл? Это лучший подход?

1 Ответ

0 голосов
/ 19 апреля 2012

Я придерживаюсь концепции использования COM здесь.Честно говоря, я бы написал COM-объект на C #, потому что это проще (чем C ++).C # имеет отличную совместимость COM.См. http://msdn.microsoft.com/en-us/library/aa645712%28v=vs.71%29.aspx. Я написал рабочий интерфейс MS VSS COM, который вызывается Python (нашей системой сборки), взаимодействуя с интерфейсом C # .NET, предоставляемым другим поставщиком;потому что это был слабый COM, он также вызывался из JScript, C ++ и т. д.

Если вы не работаете между компьютерами и / или не нуждаетесь в безопасности Windows как часть этого, я бы избежал именованных каналов, хотято, что вы на самом деле используете для транспортировки по вашему объекту, может быть чем угодно, возможно, продиктованным размером / скоростью.

...