2009-11-05 7 views
1

Как перенаправить вход и выход консоли C# в сокет? Мне нужно запустить программу из другого процесса и заставить ее получать входные данные и выводить их на другой процесс, запущенный на другом компьютере в сети. То, что я пытаюсь сделать, - это программно запустить приложение на другой станции, контролируя его с текущего терминала.Как перенаправить вход и выход консоли C# на сокет?

+0

'netcat' может помочь: http://netcat.sourceforge.net/ –

ответ

3

Используйте класс System.Diagnostics.Process, чтобы запустить консольную программу.

System.Diagnostics.Process process = new System.Diagnostics.Process(); 
process.StartInfo.RedirectStandardInput = true; 
process.StartInfo.RedirectStandardOutput = true;

И тогда вы можете подключить любой поток (включая networkstreams) до process.StandardInput и process.StandardOutput.

+0

Спасибо, я начну с этого! – luvieere

1

Вам необходимо установить ProcessStartInfo.RedirectStandardInput и RedirectStandardOutput. Это позволяет вам предоставить поток для использования для стандартного ввода/вывода консольного приложения.

Затем вы можете копировать данные из технологических потоков в поток сокета и из него.

+0

Почему downvotes? –

0

Зачем перенаправлять?

Если это ядро ​​функциональности вашего приложения, то вы должны иметь Stream переменные, что ваш код использует вместо того, чтобы полагаться на Console.Out и т.д.

поток может быть открыт из сокета, файл, независимо от прав в код.

+0

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

Смежные вопросы