Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
376 / 309 / 18
Регистрация: 26.05.2009
Сообщений: 2,677
1

Запуск стороннего консольного приложения и доступ к его потокам ввода/вывода

17.03.2014, 01:51. Показов 2720. Ответов 2
Метки нет (Все метки)

Здравствуйте! Есть java прилажение, работающее в консоли (сервер Minecraft'а). Я хочу запустить его на сервере (Windows Server 2003) как службу. Но тогда я потеряю доступ к консоли.
Я знаю, что в .Net'е можно перенаправлять потоки ввода/вывода. Вот в чем, собственно, вопрос: могу ли я в консоли .Net'а запустить сервер с консолью Явы и перенаправить потоки ввода/вывода на сокеты?
Потом напишу маленький клиент, который будет подключаться с другого конца сокетов.
Реально ли выполнить такую задачу и как запустить ява-приложение с выводом в консоль .Net'а?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.03.2014, 01:51
Ответы с готовыми решениями:

Запуск стороннего консольного приложения и взаимодействие с ним
Здравствуйте. Есть консольное приложение. Могу ли я вызвать его из своего консольного приложения и...

Запуск стороннего приложения с контролем его процесса
Незнаю в правильный ли отдел написал! Вообшим как можно мделать так что б программка запускала...

Парсинг стороннего консольного приложения
Есть приложения написанное на Java, моя задача парсить всё что идёт у неё в консоли посредством C#,...

Запуск стороннего приложения из своего
Как я могу из своего кода запускать сторонние приложения, например exe или msi файлы?

__________________

Записывайтесь на профессиональные курсы С#-разработчиков‌
2
15 / 15 / 8
Регистрация: 14.01.2013
Сообщений: 545
Записей в блоге: 2
17.03.2014, 04:03 2
Лучший ответ Сообщение было отмечено body90 как решение

Решение

как запустить ява-приложение с выводом в консоль .Net'а?

можно, как-то так, в консоль сам переделаешь, с передачей в сокет сам тоже разберешься. если код не понятен могу урезать.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        delegate void UpdateConsoleWindowDelegate(String msg);
 
        Process console = null;
        StreamWriter consoleStreamWriter = null;
 
        private void UpdateConsoleWindow(String message)
        {
 
            if (richTextBox1.InvokeRequired)
            {
                UpdateConsoleWindowDelegate update = new UpdateConsoleWindowDelegate(UpdateConsoleWindow);
                richTextBox1.Invoke(update, message);
            }
            else
            {
                richTextBox1.AppendText(message);
            }
        }
 
        private void ConsoleOutputHandler(object sendingProcess,
            DataReceivedEventArgs recieved)
        {
            if( !String.IsNullOrEmpty(recieved.Data ))
            {                
                UpdateConsoleWindow(recieved.Data + "\r\nReady>");
            }
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            //запуск
            console = new Process();
            console.StartInfo.FileName = @"cmd.exe";
          //  console.StartInfo.Arguments = "параметры запуска";
            console.StartInfo.UseShellExecute = false;
            console.StartInfo.CreateNoWindow = true;
            console.StartInfo.RedirectStandardInput = true;
            console.StartInfo.RedirectStandardOutput = true;
            
            console.OutputDataReceived += new DataReceivedEventHandler(ConsoleOutputHandler);
           // console.StartInfo.Arguments = "login <qweqwe>";
            console.Start();
            consoleStreamWriter = console.StandardInput;
            //console.BeginOutputReadLine();
            button1.Enabled = false;
            button2.Enabled = true;
            
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            // стоп потока 
            if (!console.HasExited)
            {
                foreach (Process p in System.Diagnostics.Process.GetProcessesByName("cmd.exe"))
                {
                    try
                    {
                        p.Kill();
                        p.WaitForExit();
                    }
                    catch (Win32Exception winException)
                    {
                    }
                    catch (InvalidOperationException invalidException)
                    {
                    }
                }
 
                button1.Enabled = true;
                button2.Enabled = false;
            }
        }
 
        private void button3_Click(object sender, EventArgs e)
        {
           consoleStreamWriter.WriteLine("login<qweqwe>");   //  Отправка в поток
        }
    }
}
1
376 / 309 / 18
Регистрация: 26.05.2009
Сообщений: 2,677
17.03.2014, 10:50  [ТС] 3
Оказывается, решение красивее, чем я представлял. А никаких проблем не будет со стартом процесса, если я это приложение сделаю службой?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.03.2014, 10:50

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Перенаправление вывода консольного приложения в WinForm
Добрый день! Имеется программа AVRDude. Консольный вариант. Делаю перенаправление вывода с этого...

Запуск стороннего приложения от имени другого пользователя
Доброго времени суток. Пишу программу которая должна проверять установленость драйверов при помощи...

Не удаётся перенаправить потоки вывода буферного консольного приложения
Доброго времени суток. Стоит задача: Есть программа, которая запускает консольное приложение с...

Запуск стороннего приложения с asp страницы
почитал все что можно по данной теме в том числе и здесь и в MSDN'е накропал вот такую процедуру:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.