Tshark прекращает захват через несколько минут, хотя процесс все еще выполняется

У меня есть сборка.Net приложения, которые начинают захватывать с помощью командной строки

  private void startCapturing(string path)
    {
        string args = string.Format("-i 1 -s 65535 -w {0}", Path.Combine(@"D:\Downloads", path));
    }

protected void invokeProcess(WiresharkProcesses process, string args)
{
    try
    {
        string processToInvoke = null;
        validateProcess(process);

        switch (process)
        {
            case WiresharkProcesses.Capinfo:
                processToInvoke = Path.Combine(getbBasePath, "capinfos.exe");
                break;
            case WiresharkProcesses.Editcap:
                processToInvoke = Path.Combine(getbBasePath, "editcap.exe");
                break;
            case WiresharkProcesses.Tshark:
                processToInvoke = Path.Combine(getbBasePath, "tshark.exe");
                break;
            case WiresharkProcesses.Wireshark:
                processToInvoke = Path.Combine(getbBasePath, "wireshark.exe");
                break;
        }

        ProcessStartInfo processStartInfo = new ProcessStartInfo(processToInvoke);
        processStartInfo.Arguments = args;
        processStartInfo.WindowStyle = ProcessWindowStyle.Hidden;
        processStartInfo.RedirectStandardOutput = true;
        processStartInfo.RedirectStandardError = true;
        processStartInfo.CreateNoWindow = true;
        processStartInfo.UseShellExecute = false;
        processStartInfo.ErrorDialog = false;
        Process pros = Process.Start(processStartInfo);
    }
    catch (Exception ex)
    {
        cw(ex.Message);
    }
}

все работает нормально, но через несколько минут (когда процесс thark все еще выполняется) я вижу, что новые пакеты не получены (я просто открываю запись на моем диске) и истекшее время (статистика -> сводка) не увеличивается.

Если я использую ту же команду, но непосредственно из командной строки (без кода.Net), она работает без остановки. Кстати мой wireshark версия 1.10.0 под Windows 8 x64

1 ответ

Возможно, вы не получаете столько пакетов, а tshark их буферизует. Так что, похоже, что tshark на некоторое время прекратил захват. Чтобы убедиться, что tshark не буферизует пакеты:

tshark -l

Со страницы руководства:

-l  Flush the standard output after the information for each packet is printed. 
    [...]

    This may be useful when piping the output of TShark to another program, as it
    means that the program to which the output is piped will see the dissected
    data for a packet as soon as TShark sees the packet and generates that
    output, rather than seeing it only when the standard output buffer containing
    that data fills up.
Другие вопросы по тегам