【发布时间】:2014-05-21 11:53:07
【问题描述】:
我正在使用 iperf-2.0.5-2-win32 工具来查找网络带宽。我在 c# 中编写了打开 cmd 提示符的代码,传递 iperf 参数以启动服务器端和客户端。 iperf-2.0.5-2-win32 exe不会直接打开,只能通过cmd提示打开。 目前输出(传输速率和带宽)显示在 cmd 提示符本身上。我希望这些输出显示在文本框中 我也尝试过 StreamReader。但是它取null,我也尝试过OutputDataReceived Event,它也取null。 找到了一些 ipconfig 和 ping 的代码。但这些代码不适用于 iperf 代码。
button_click event(),
{
Process Client_proc = new Process();
ProcessStartInfo Client_command = new ProcessStartInfo("cmd.exe");
string ip = txtIP.Text;
Client_command.CreateNoWindow = true;
Client_command.WindowStyle = ProcessWindowStyle.Hidden;
Client_command.WorkingDirectory = @"E:\Iperf\RunEXE_Through_Application\iperf-2.0.5-2-win32";
Client_command.Arguments = "/c START iperf -c " + ip;
Client_proc.StartInfo = Client_command;
Client_command.RedirectStandardOutput = true;
Client_command.UseShellExecute = false;
Client_proc.OutputDataReceived += new DataReceivedEventHandler(Client_proc_OutputDataReceived);
Client_proc.Start();
Client_proc.BeginOutputReadLine();
Client_proc.WaitForExit();
}
void Client_proc_OutputDataReceived(object sender, DataReceivedEventArgs e)
{
if (e.Data != null)
{
string newLine = e.Data.Trim() + Environment.NewLine;
MethodInvoker append = () => txtOutput.Text += newLine;
txtOutput.BeginInvoke(append);
}
}
请帮助我。感谢早期的回复 谢谢
【问题讨论】:
-
“它需要 null”到底是什么意思?
-
@hSchroedl- 如果我保留断点并且 E.Data() 的检查值为 null" 如果我保留断点并且在 Client_proc_OutputDataReceived 中检查 e.Data() 的值为 null
-
嗯。我自己尝试了 iperf,但即使我从 cmd 窗口启动它也无法获得输出......所以调试这对我来说有点困难。我建议您像往常一样从命令行执行它,然后查看输出结果。我注意到的另一个可能的问题是“START”将打开另一个窗口/进程,您不会附加任何侦听器/流读取器。这就是我所拥有的,对不起。
标签: c# command-prompt iperf