C# 啟動/呼叫/執行 外部程式/BAT/CONSOLE 傳遞參數/接收結果 [C# CALL PING]/ C# 實作PING功能​

C# 啟動/呼叫/執行 外部程式/BAT/CONSOLE 傳遞參數/接收結果 [C# CALL PING]/ C# 實作PING功能​

C# 啟動/呼叫/執行 外部程式/BAT/CONSOLE 傳遞參數/接收結果 [C# CALL PING]/  C# 實作PING功能


資料來源: https://stackoverflow.com/questions/41895971/c-sharp-output-command-prompt-in-real-time-to-a-text-box?noredirect=1&lq=1


GITHUB: https://github.com/jash-git/CS_Callping

01.cmd call ping

02.cmd call ping & 使用 .NET 原生元件

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
using System.IO;

namespace CS_Callping
{
    class Program
    {
        //C# CALL PING
        //https://stackoverflow.com/questions/41895971/c-sharp-output-command-prompt-in-real-time-to-a-text-box?noredirect=1&lq=1
        static void pause()
        {
            Console.Write("Press any key to continue...");
            Console.ReadKey(true);
        }
        static string Cmd(string[] cmd)
        {
            Process proc = new Process();
            proc.StartInfo.FileName = cmd[0];
            proc.StartInfo.Arguments = cmd[1];
            proc.StartInfo.UseShellExecute = false;
            proc.StartInfo.RedirectStandardOutput = true;
            proc.StartInfo.RedirectStandardError = true;
            proc.StartInfo.CreateNoWindow = true;

            proc.Start();

            string stdout = "";
            using (StreamReader reader = proc.StandardOutput)
            {
                stdout += reader.ReadToEnd();
            }

            proc.WaitForExit();

            return stdout;
        }
        static void Main(string[] args)
        {
            string[] cmd = {"ping","8.8.8.8 -n 5"};
            string data = Cmd(cmd);
            Console.WriteLine(data);
            pause();
        }
    }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
using System.IO;
using System.Net.NetworkInformation;

namespace CS_Callping
{
    class Program
    {
        //C# CALL PING
        //https://stackoverflow.com/questions/41895971/c-sharp-output-command-prompt-in-real-time-to-a-text-box?noredirect=1&lq=1
        static void pause()
        {
            Console.Write("Press any key to continue...");
            Console.ReadKey(true);
        }
        static string Cmd(string[] cmd)
        {
            Process proc = new Process();
            proc.StartInfo.FileName = cmd[0];
            proc.StartInfo.Arguments = cmd[1];
            proc.StartInfo.UseShellExecute = false;
            proc.StartInfo.RedirectStandardOutput = true;
            proc.StartInfo.RedirectStandardError = true;
            proc.StartInfo.CreateNoWindow = true;

            proc.Start();

            string stdout = "";
            using (StreamReader reader = proc.StandardOutput)
            {
                stdout += reader.ReadToEnd();
            }

            proc.WaitForExit();

            return stdout;
        }
        static void Main(string[] args)
        {
            string[] cmd = { "ping", "8.8.8.8 -n 5" };
            string data = Cmd(cmd);
            Console.WriteLine(data);

            //---
            //C# 原生PING元件
            //https://blog.csdn.net/Andrew_wx/article/details/6628501
            //构造Ping实例
            Ping pingSender = new Ping();
            //Ping 选项设置
            PingOptions options = new PingOptions();
            options.DontFragment = true;
            //测试数据
            string data01 = "test data abcabc";
            byte[] buffer = Encoding.ASCII.GetBytes(data01);
            //设置超时时间
            int timeout = 120;
            //调用同步 send 方法发送数据,将返回结果保存至PingReply实例
            PingReply reply = pingSender.Send("8.8.8.8", timeout, buffer, options);
            if (reply.Status == IPStatus.Success)
            {
                Console.WriteLine("答復的主機地址:" + reply.Address.ToString());
                Console.WriteLine("往返時間:" + reply.RoundtripTime);
                Console.WriteLine("生存時間(TTL):" + reply.Options.Ttl);
                Console.WriteLine("是否控制數據包的分段:" + reply.Options.DontFragment);
                Console.WriteLine("緩沖區大小:" + reply.Buffer.Length);
            }
            else
            {
                Console.WriteLine(reply.Status.ToString());
            }

            //---C# 原生PING元件

            pause();
        }
    }
}

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *