У меня есть два приложения, одно клиентское, другое серверное. Сервер запускает клиента как подпоток. Затем клиент выводит свои команды через стандартный выход. Сервер ожидает команду и отвечает соответствующим образом.
В основном клиент-сервер через стандартный выход.
Например:
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}
Проблема в том, что я не знаю, как соединить два приложения вместе, чтобы сервер читал и отвечал клиентскому приложению.
Причина, по которой я хотел бы использовать командную строку в качестве коммуникационного уровня, заключается в том, что я хочу максимально упростить создание клиента.
Также одновременно может быть более одного клиента. Клиенты должны иметь возможность взаимодействовать с сервером независимо друг от друга. (они не должны видеть сообщения друг друга)
В настоящее время я запускаю приложение через СоздатьПроцесс(). Эта функция упрощает настройку начальных параметров командной строки приложения. только не общение потом.
Мой вопрос:
- Как серверное приложение, запускающее клиентское приложение в виде потока, читает/записывает стандартный вывод клиента?
stdout
/stdin
как способ общения при использовании потоков. Если вы поместите клиента в отдельный процесс, это сработает, но я бы не назвал это хорошим дизайном. Вместо этого вам следует рассмотреть другие способы связи, такие как трубы или сокеты. Это поможет вам в будущем, когда ваш клиент не будет частью вашего сервера. - person Some programmer dude   schedule 05.11.2012pthreads
, который обычно недоступен в Windows) иCreateProcess
. ФункцияCreateProcess
создает процесс, а не поток. - person Some programmer dude   schedule 05.11.2012STARTUPINFO
? - person Some programmer dude   schedule 05.11.2012