Какими способами можно организовать взаимодействие между разными программами?
Например есть несколько exe файлов и им нужно как-то взаимодействовать друг с другом. Я знаю вариант взаимодействия через TCP между ними, но поднимать сервер на локальной машине как-то не очень хочется.
А расскажите мне, как можно организовать TCP взаимодействие без подъема сервера? Это нереально:)
А вообще - для вас придумано десятки разных способов RPC (remote procedure call), включая стандартный для golang, grpc.
Расскажите подробнее, из той информации, что вы предоставили немного непонятно, чем являются программы, работают ли они в режиме "демона" и так далее.
У меня в комментарии указано, что "поднимать сервер на локальной машине как-то не очень хочется", здесь я имел ввиду не обмен по tcp без сервера, а то что мне не хочется поднимать этот сервер для решениях такой задачи.
Одна программа работает в режиме демона и должна принимать, обрабатывать и выдавать данные пользователю. Другая программа запускается пользователем, в которую он заносит данные и ждет ответа от другой программы.
12rbah, Так вариантов помимо TCP уйма. Есть через шаринг файла, через Memory mapped file, Named Pipe, обьекты синхронизации и т.д. зависит от того что вы по итогу хотите получить
12rbah, Сервер применительно к TCP отличается от клиента только тем, что он открывает слушающий сокет, а клиент нет. Вот и все. Программа работающая демоном - 100% кандидат на роль TCP сервера. Не думайте, что сервер - это какой-то монстр, сервера бывают разные.
Но вообще, если обе программы должны работать исключительно на одном компе, то TCP не самый лучший (быстрый и простой) вариант.
Самый быстрый - обмен через shared memory, но нужно заморочится на синхронизацию доступа к данным (предотвращение гонки данных).
Без синхронизации - pipe.
Реализации этих двух вариантов есть во всех современных ОС.
Есть и другие варианты, смотри ответ Армянское Радио
Если же в планах есть использование программ по сети, то количество вариантов сильно сокращается: TCP или UDP. Так же можно использовать промежуточную базу данных или очередь.
Способов очень много. Некоторые от них зависят от применяемой ОС, некоторые - нет. Все зависит от решаемой задачи - нет смысла переписывать сюда учебник.