Todiruta Costel Nicusor Ответов: 2

Как я могу сделать связь между двумя prgrams (один в C# и другой в C) с помощью общей памяти


Я хочу установить связь между двумя программами, одной на C# , а другой на C. У меня есть сервер, который написан на языке Си и использует функции Windows Api.
Я должен создать клиент, который должен быть написан на C#.

Что я уже пробовал:

Я уже пробовал использовать класс memory Mapped File, но id не работал.
Я также попытался использовать функции Windows API, но опять же это не сработало.
Что касается последней попытки, я думаю, но я не уверен, что проблема должна быть в параматерах, я не знаю, как заменить тип дескриптора, void*.
Я попробовал с IntPtr from .Сеть, но это не сработало.
Есть ли способ заставить эту коммуникацию работать, но с помощью одного из этих испытаний?

Спасибо.

Afzaal Ahmad Zeeshan

Поскольку это большая часть коммуникации в двух разных фреймворках, платформах. Поддержки будет гораздо меньше. Однако вы можете создать модель на основе разговоров, например сокеты, и говорить на них.

С другой стороны, вы также можете попытаться сопоставить свои программы с определенным URI и общаться там. Это не потребует гораздо более сложной привязки в программах-сервере и клиентах — но будет работать по мере необходимости.

2 Ответов

Рейтинг:
2

Kornfeld Eliyahu Peter

Может быть, файл с отображением памяти поможет вам здесь:
C / C++ - Создание Именованной Общей Памяти (Windows)[^]
С# - Файлы, Сопоставленные С Памятью[^]


Рейтинг:
2

RickZeeland

Вот пример, не на C, а на C++, использующий gSOAP чтобы вызвать службу WCF (которая может быть на языке C#): Вызов служб WCF из клиента Linux C++ с использованием gSOAP | кода на лодке (старый)[^]

Если вашим приложениям требуется только локальная межпроцессная связь (IPC) с трубы это быстрый механизм, см. Эту статью о CodeProject: Оболочка C++ для IPC на основе труб в Windows[^]