<PackageReference Include="SSH.NET" Version="2016.0.0-beta2" />

ForwardedPortDynamic

Provides functionality for forwarding connections from the client to destination servers via the SSH server, also known as dynamic port forwarding.
using System; using System.Threading; namespace Renci.SshNet { public class ForwardedPortDynamic : ForwardedPort { private EventWaitHandle _listenerCompleted; private bool _isDisposed; public string BoundHost { get; set; } public uint BoundPort { get; set; } public override bool IsStarted { get { if (_listenerCompleted != null) return !_listenerCompleted.WaitOne(0); return false; } } public ForwardedPortDynamic(uint port) : this(string.Empty, port) { } public ForwardedPortDynamic(string host, uint port) { BoundHost = host; BoundPort = port; } protected override void StartPort() { } protected override void StopPort(TimeSpan timeout) { if (IsStarted) base.StopPort(timeout); } protected override void CheckDisposed() { if (_isDisposed) throw new ObjectDisposedException(GetType().FullName); } public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } protected override void Dispose(bool disposing) { if (!_isDisposed) { base.Dispose(disposing); if (disposing) { EventWaitHandle listenerCompleted = _listenerCompleted; if (listenerCompleted != null) { listenerCompleted.Dispose(); _listenerCompleted = null; } } _isDisposed = true; } } ~ForwardedPortDynamic() { Dispose(false); } } }