【问题标题】:C# Iperf ServerC# Iperf 服务器
【发布时间】:2015-02-16 20:06:57
【问题描述】:

我正在尝试为 Iperf 服务器编写 C# 包装器。在 Iperf 客户端完成数据包发送后,C# 服务器应用程序应将输出数据转储到文本文件中。 问题是这个进程(服务器)永远不会退出,所以它不会将任何数据转储到 txt 文件中。但是,当我手动关闭运行 iperf 服务器的 cmd 窗口时,文本文件会写入数据(进程退出)。但这显然不是我正在寻找的解决方案。 有什么建议如何将数据直接写入文件,而无需手动关闭 iperf 服务器 cmd 窗口?

这是我的代码:

private void button1_Click(object sender, EventArgs e)
{       
    string commandline_server = " -s -u -i 1";

    try
    {        
        process = new Process();
        process.StartInfo.FileName = "iperf.exe";
        process.StartInfo.UseShellExecute = false;
        process.StartInfo.RedirectStandardOutput = true;
        //process.StartInfo.RedirectStandardError = true;

        process.StartInfo.Arguments = commandline_server;
        process.StartInfo.CreateNoWindow = false;

        process.EnableRaisingEvents = true;
        process.Exited += new EventHandler(process_Exited);

        process.Start();              
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.ToString());
    }
}

void process_Exited(object sender, EventArgs e)
{
    //throw new NotImplementedException();
    string outfile = process.StandardOutput.ReadToEnd();
    System.IO.File.WriteAllText("test.txt", outfile);
}

【问题讨论】:

  • 感谢您的链接,但这对我帮助不大。似乎进程(Iperf 服务器)实际上永远不会退出,因此它永远不会引发事件。我想知道是否有一种方法可以连续读取输出,而无需等待进程退出?谢谢。
  • 它可以引发事件。我将接受答案中的代码粘贴到 VS verbaitm 中,更改文件路径和命令行,将文本框和按钮添加到表单并将按钮连接到 StartProcess 方法,并在每行之后添加一个新行Display 方法。我立刻得到了this。

标签: c# server iperf


【解决方案1】:

您是否考虑过使用他们的 API,而不是向终端发起攻击? iperf3 引入了“libiperf”。

在其源代码树中有示例 C 程序。

【讨论】:

    猜你喜欢
    • 2017-02-14
    • 1970-01-01
    • 2017-06-14
    • 1970-01-01
    • 2013-08-20
    • 2011-07-08
    • 2011-08-15
    • 2017-01-30
    • 2018-06-11
    相关资源
    最近更新 更多