winapi — клиентские / серверные приложения связываются через командную строку с потоками переполнения стека

У меня есть два приложения: одно — клиент, другое — сервер. Сервер запускает клиента как подпоток. Затем клиент выводит свои команды через стандартный выход. Сервер ждет команды и отвечает соответственно.

В основном клиентский сервер через стандартный выход.

Например:

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() функция. Эта функция упрощает настройку начальных параметров командной строки приложения. просто не общение потом.

Мой вопрос:

  • Как серверное приложение, которое запускает клиентское приложение в виде потока, читает / записывает стандартный вывод клиента?

3

Решение

Как отмечается в вышеприведенных комментариях, именованные каналы (или сокеты) — это путь к решению такого рода, и вам, вероятно, нужны два отдельных процесса, а не потоки.

В Windows TransactNamedPipe() Системный вызов поможет вам выполнить то, что вы хотите. Он идеально подходит для отправки команд на сервер и ожидания ответа, что упрощает создание клиента, который выполняет что-то очень похожее на (синхронные) удаленные вызовы процедур для сервера.

0

Другие решения

Других решений пока нет …