Renci SSH NET: отображение ширины/высоты при изменении размера терминала

В настоящее время я работаю над эмуляцией терминала с использованием SSH.NET. Создание SshClient и ShellStream с текущими столбцами/строками работает правильно.

Но когда я изменяю размер размеров терминала (например, Putty), я не могу найти способ отправить новые столбцы/строки на сервер.

Единственный способ, который я вижу, - закрыть поток оболочки и создать новый. Есть ли лучший способ отправить новый «макет» на сервер?

Заранее спасибо :-)


person Ulf Bierkämper    schedule 18.02.2017    source источник


Ответы (1)


После нескольких дней исследований я реализовал новый метод в ShellStream.cs:

    /// <summary>
    /// Sends a "window-change" request.
    /// </summary>
    /// <param name="columns">The terminal width in columns.</param>
    /// <param name="rows">The terminal width in rows.</param>
    /// <param name="width">The terminal height in pixels.</param>
    /// <param name="height">The terminal height in pixels.</param>
    public void SendWindowChangeRequest(uint columns, uint rows, uint width, uint height)
    {
        if (_channel == null)
        {
            throw new ObjectDisposedException("ShellStream");
        }
        _channel.SendWindowChangeRequest(columns, rows, width, height);
    }

Это решило проблему. Теперь я могу вызвать "SendWindowChangeRequest(...)", и окно оболочки на стороне сервера обновлено :-)

Не уверен, почему эта функция отсутствует в реализации Renci. Может есть еще способ...

person Ulf Bierkämper    schedule 08.03.2017