Ejemplo n.º 1
0
 /// <summary>
 /// Disconnect and stop cilent
 /// </summary>
 internal void StopExchange()
 {
     IsStarted            = false;
     _isReadThreadEnabled = false;
     //lock (_networkInterfaceReadSyncObject)
     {
         //lock (_networkInterfaceWriteSyncObject)
         {
             _networkInterface?.Dispose();
             _networkInterface = null;
         }
     }
 }
Ejemplo n.º 2
0
        private bool ConnectToServer()
        {
            System.Net.Sockets.TcpClient client = null;
            try
            {
                _exchangeInterface?.Dispose();
                client = new System.Net.Sockets.TcpClient(DestinationIpEndPoint.Address.ToString(), DestinationIpEndPoint.Port);
                if (IsEncrypted)
                {
                    _exchangeInterface = new EncryptedTcpClientNetworkExchangeInterface(client, _serverName, _clientCertificates, _enabledSslProtocols, _checkCertificateRevocation, _encryptionPolicy, ValidateServerCertificateEvent, SelectLocalCertificateEvent);
                }
                else
                {
                    _exchangeInterface = new TcpClientNetworkExchangeInterface(client);
                }
                _exchangeInterface.DisconnectedEvent += _exchangeInterface_DisconnectedEvent;

                IsConnected    = true;
                _pingFailCount = 0;

                StartExchange(_exchangeInterface);

                OnConnectedEvent(_exchangeInterface.LocalEndPoint, _exchangeInterface.RemoteEndPoint);

                return(true);
            }
            catch (SocketException se)
            {
                _exchangeInterface?.Dispose();
                client?.Close();
                OnConnectionFailEvent(se.SocketErrorCode.ToString());
                return(false);
            }
            catch (ThreadAbortException)
            {
                return(false);
            }
            catch (Exception ex)
            {
                _exchangeInterface?.Dispose();
                client?.Close();
                OnConnectionFailEvent(ex.Message);
                return(false);
            }
        }