<PackageReference Include="SSH.NET" Version="2020.0.0-beta1" />

ChannelOpenMessage

public class ChannelOpenMessage : Message
Represents SSH_MSG_CHANNEL_OPEN message.
using Renci.SshNet.Common; using System; using System.Globalization; namespace Renci.SshNet.Messages.Connection { [Message("SSH_MSG_CHANNEL_OPEN", 90)] public class ChannelOpenMessage : Message { internal const byte MessageNumber = 90; private byte[] _infoBytes; public byte[] ChannelType { get; set; } public uint LocalChannelNumber { get; set; } public uint InitialWindowSize { get; set; } public uint MaximumPacketSize { get; set; } public ChannelOpenInfo Info { get; set; } protected override int BufferCapacity => base.BufferCapacity + 4 + ChannelType.Length + 4 + 4 + 4 + _infoBytes.Length; public ChannelOpenMessage() { } public ChannelOpenMessage(uint channelNumber, uint initialWindowSize, uint maximumPacketSize, ChannelOpenInfo info) { if (info == null) throw new ArgumentNullException("info"); ChannelType = SshData.Ascii.GetBytes(info.ChannelType); LocalChannelNumber = channelNumber; InitialWindowSize = initialWindowSize; MaximumPacketSize = maximumPacketSize; Info = info; _infoBytes = info.GetBytes(); } protected override void LoadData() { ChannelType = ReadBinary(); LocalChannelNumber = ReadUInt32(); InitialWindowSize = ReadUInt32(); MaximumPacketSize = ReadUInt32(); _infoBytes = ReadBytes(); string string = SshData.Ascii.GetString(ChannelType, 0, ChannelType.Length); switch (string) { case "session": Info = new SessionChannelOpenInfo(_infoBytes); break; case "x11": Info = new X11ChannelOpenInfo(_infoBytes); break; case "direct-tcpip": Info = new DirectTcpipChannelInfo(_infoBytes); break; case "forwarded-tcpip": Info = new ForwardedTcpipChannelInfo(_infoBytes); break; default: throw new NotSupportedException(string.Format(CultureInfo.CurrentCulture, "Channel type '{0}' is not supported.", new object[1] { string })); } } protected override void SaveData() { WriteBinaryString(ChannelType); Write(LocalChannelNumber); Write(InitialWindowSize); Write(MaximumPacketSize); Write(_infoBytes); } internal override void Process(Session session) { session.OnChannelOpenReceived(this); } } }