У меня есть два приложения: одно — клиент, другое — сервер. Сервер запускает клиента как подпоток. Затем клиент выводит свои команды через стандартный выход. Сервер ждет команды и отвечает соответственно.
В основном клиентский сервер через стандартный выход.
Например:
client >> Move north
Server >> Your new location is {2,3}
client >> Move north
Server >> Your new location is {2,2}
client >> Shoot east
Server >> Projectile 66638 heading east {3,2}
Проблема в том, что я не знаю, как соединить два приложения вместе, чтобы сервер и чтение и ответ на клиентское приложение.
Причина, по которой я хотел бы использовать командную строку в качестве коммуникационного уровня, заключается в том, что я хочу максимально упростить создание клиента.
Также может быть более одного клиента одновременно. Клиенты должны иметь возможность взаимодействовать с сервером независимо друг от друга. (они не должны видеть сообщения друг друга)
В настоящее время я запускаю приложение через CreateProccess() функция. Эта функция упрощает настройку начальных параметров командной строки приложения. просто не общение потом.
Мой вопрос:
Как отмечается в вышеприведенных комментариях, именованные каналы (или сокеты) — это путь к решению такого рода, и вам, вероятно, нужны два отдельных процесса, а не потоки.
В Windows TransactNamedPipe()
Системный вызов поможет вам выполнить то, что вы хотите. Он идеально подходит для отправки команд на сервер и ожидания ответа, что упрощает создание клиента, который выполняет что-то очень похожее на (синхронные) удаленные вызовы процедур для сервера.
Других решений пока нет …