コード例 #1
0
 private void Form1_Load(object sender, EventArgs e)
 {
     try
     {
         _jSession = new JSession();
         _jSession.SetStringOutput((type, output) =>
         {
             if (null != output)
             {
                 this.textBox2.Text          += output.Replace("\n", "\r\n");
                 this.textBox2.SelectionStart = this.textBox2.Text.Length;
                 this.textBox2.ScrollToCaret();
             }
         });
         _jSession.SetInput((p) =>
         {
             this._form2.ShowDialog();
             var result                   = this._form2.textBox1.Text;
             this.textBox2.Text          += result + "\r\n";
             this.textBox2.SelectionStart = this.textBox2.Text.Length;
             this.textBox2.ScrollToCaret();
             return(result);
         });
         _jSession.ApplyCallbacks();
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message, "Critical Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
     }
 }
コード例 #2
0
        private static int Main(string[] argv)
        {
            try
            {
                System.Console.InputEncoding  = (5 == Environment.OSVersion.Version.Major) ? Encoding.UTF8 : Encoding.Unicode;
                System.Console.OutputEncoding = Encoding.UTF8;
                _programName = JSession.ProgramName;
                _options     = new CmdLineOptions();

                bool showHelp  = false;
                bool isServer  = false;
                var  optionSet = new OptionSet()
                {
                    { "p|port:", "{PORT} to listen to. Multiple ports are supported.", (ushort v) => { _options.Ports.Add(v); isServer = true; } },
                    { "i|interactive", "Interactive session. Use -i- to turn off.", v => _options.Interactive = v != null },
                    { "l|loopback", "Listen on loopback. Use -l- to use network.\n", v => _options.Loopback = v != null },
                    { "h|help", "Show this message and exit.", v => showHelp = v != null }
                };

                try
                {
                    _options.JOptions = optionSet.Parse(argv).ToArray();
                    if (showHelp)
                    {
                        ShowHelp(optionSet);
                        return(0);
                    }
                    if ((!_options.Interactive || !_options.Loopback) && _options.Ports.Count < 1)
                    {
                        throw new Exception(string.Format("Missing PORT for server session."));
                    }
                }
                catch (Exception ex)
                {
                    System.Console.Error.WriteLine();
                    System.Console.Error.Write(string.Format("{0}: ", _programName));
                    System.Console.Error.WriteLine(ex.Message);
                    System.Console.Error.WriteLine(string.Format("Try '{0} --help' for more information.", _programName));
                    return(1);
                }
                using (_jSession = new JSession(_options.JOptions))
                {
                    System.Console.CancelKeyPress += (sender, e) =>
                    {
                        e.Cancel = true;
                        _jSession.IncAdBreak();
                    };
                    _jSession.SetType(JSession.SMCON);
                    if (!isServer) // normal interactive console read/write to standard streams.
                    {
                        _jSession.SetStringOutput((tp, s) =>
                        {
                            if (JSession.MTYOEXIT == tp)
                            {
                                Environment.Exit(tp);
                            }
                            System.Console.Out.Write(s); System.Console.Out.Flush();
                        });
                        _jSession.SetDoWd(Parser.Parse);
                        _jSession.SetInput(JInput);
                        _jSession.ApplyCallbacks();
                    }
                    if (isServer)
                    {
                        var threadCount = _options.Interactive ? _options.Ports.Count : _options.Ports.Count - 1;
                        for (int i = 0; i < threadCount; i++)
                        {
                            ServerProc(_options.Ports[i]);
                        }
                        if (!_options.Interactive) // use main thread
                        {
                            ServerProc(_options.Ports[threadCount]);
                        }
                    }
                    else
                    {
                        while (true)
                        {
                            _jSession.Do(JInput("   "));
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                System.Console.Error.WriteLine();
                System.Console.Error.Write(string.Format("{0}: ", _programName));
                System.Console.Error.WriteLine(ex.ToString());
                if (!IsConsoleInputRedirected())
                {
                    System.Console.Error.Write("Press any key to continue... ");
                    System.Console.ReadKey();
                }
                return(1);
            }
            return(0);
        }
コード例 #3
0
ファイル: Form1.cs プロジェクト: borota/NetJ
 private void Form1_Load(object sender, EventArgs e)
 {
     try
     {
         _jSession = new JSession();
         _jSession.SetStringOutput((type, output) =>
         {
             if (null != output)
             {
                 this.textBox2.Text += output.Replace("\n", "\r\n");
                 this.textBox2.SelectionStart = this.textBox2.Text.Length;
                 this.textBox2.ScrollToCaret();
             }
         });
         _jSession.SetInput((p) =>
         {
             this._form2.ShowDialog();
             var result = this._form2.textBox1.Text;
             this.textBox2.Text += result + "\r\n";
             this.textBox2.SelectionStart = this.textBox2.Text.Length;
             this.textBox2.ScrollToCaret();
             return result;
         });
         _jSession.ApplyCallbacks();
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message, "Critical Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
     }
 }
コード例 #4
0
ファイル: Program.cs プロジェクト: borota/NetJ
        private static int Main(string[] argv)
        {
            try
            {
                System.Console.InputEncoding = (5 == Environment.OSVersion.Version.Major) ? Encoding.UTF8 : Encoding.Unicode;
                System.Console.OutputEncoding = Encoding.UTF8;
                _programName = JSession.ProgramName;
                _options = new CmdLineOptions();

                bool showHelp = false;
                bool isServer = false;
                var optionSet = new OptionSet()
                {
                    { "p|port:", "{PORT} to listen to. Multiple ports are supported.", (ushort v) => { _options.Ports.Add(v); isServer = true; } },
                    { "i|interactive", "Interactive session. Use -i- to turn off.", v => _options.Interactive = v != null },
                    { "l|loopback", "Listen on loopback. Use -l- to use network.\n", v => _options.Loopback = v != null },
                    { "h|help",  "Show this message and exit.", v => showHelp = v != null }
                };

                try
                {
                    _options.JOptions = optionSet.Parse(argv).ToArray();
                    if (showHelp)
                    {
                        ShowHelp(optionSet);
                        return 0;
                    }
                    if ((!_options.Interactive || !_options.Loopback) && _options.Ports.Count < 1)
                    {
                        throw new Exception(string.Format("Missing PORT for server session."));
                    }
                }
                catch (Exception ex)
                {
                    System.Console.Error.WriteLine();
                    System.Console.Error.Write(string.Format("{0}: ", _programName));
                    System.Console.Error.WriteLine(ex.Message);
                    System.Console.Error.WriteLine(string.Format("Try '{0} --help' for more information.", _programName));
                    return 1;
                }
                using (_jSession = new JSession(_options.JOptions))
                {
                    System.Console.CancelKeyPress += (sender, e) =>
                    {
                        e.Cancel = true;
                        _jSession.IncAdBreak();
                    };
                    _jSession.SetType(JSession.SMCON);
                    if (!isServer) // normal interactive console read/write to standard streams.
                    {
                        _jSession.SetStringOutput((tp, s) =>
                        {
                            if (JSession.MTYOEXIT == tp) Environment.Exit(tp);
                            System.Console.Out.Write(s); System.Console.Out.Flush();
                        });
                        _jSession.SetDoWd(Parser.Parse);
                        _jSession.SetInput(JInput);
                        _jSession.ApplyCallbacks();
                    }
                    if (isServer)
                    {
                        var threadCount = _options.Interactive ? _options.Ports.Count : _options.Ports.Count - 1;
                        for (int i = 0; i < threadCount; i++)
                        {
                            ServerProc(_options.Ports[i]);
                        }
                        if (!_options.Interactive) // use main thread
                        {
                            ServerProc(_options.Ports[threadCount]);
                        }
                    }
                    else
                    {
                        while (true)
                        {
                            _jSession.Do(JInput("   "));
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                System.Console.Error.WriteLine();
                System.Console.Error.Write(string.Format("{0}: ", _programName));
                System.Console.Error.WriteLine(ex.ToString());
                if (!IsConsoleInputRedirected())
                {
                    System.Console.Error.Write("Press any key to continue... ");
                    System.Console.ReadKey();
                }
                return 1;
            }
            return 0;
        }