/// <summary> /// Release resources. /// </summary> /// <param name="disposing">If disposing equals true, Managed and unmanaged resources are disposed. /// if false, Only unmanaged resources can be disposed.</param> private void Dispose(bool disposing) { if (!this.disposed) { // If disposing equals true, dispose all managed and unmanaged resources. if (disposing) { // Free managed resources & other reference types: if (this.transport != null) { this.transport.Dispose(); this.transport = null; } } this.disposed = true; } }
/// <summary> /// Set up connection with server. /// Including 4 steps: 1. Tcp connection 2. Negotiation 3. SessionSetup 4. TreeConnect in order /// </summary> /// <param name="server">server name of ip address</param> /// <param name="client">client name of ip address</param> /// <param name="domain">user's domain</param> /// <param name="userName">user's name</param> /// <param name="password">user's password</param> /// <param name="timeout">The pending time to get server's response in step 2, 3 or 4</param> /// <exception cref="System.Net.ProtocolViolationException">Fail to set up connection with server</exception> public void Connect( string server, string client, string domain, string userName, string password, TimeSpan timeout, SecurityPackageType securityPackage, bool useServerToken, bool transportPreferredSMB) { if (transportPreferredSMB) { transport = new SmbClientTransport(); } else { transport = new Smb2ClientTransport(); } transport.Connect(server, client, domain, userName, password, timeout, securityPackage, useServerToken); }