Beispiel #1
0
 /// <summary>
 /// Disconnects from the remote server and cleans up resources
 /// </summary>
 /// <param name="e">An exception if one occurred</param>
 public void Disconnect(Exception e = null)
 {
     _reader?.Stop();
     _reader = null;
     _writer?.Stop();
     _writer = null;
     _networkStream?.Dispose();
     _networkStream = null;
     _client?.Close();
     _client = null;
     OnDisconnected(e);
 }
Beispiel #2
0
        /// <summary>
        /// Creates the TcpClientReader and TcpClientWriter
        /// </summary>
        /// <param name="remoteAddress">The remote server address</param>
        private void FinalizeConnection(IPAddress remoteAddress)
        {
            _networkStream             = _client.GetStream();
            _reader                    = new TcpClientReader(_client);
            _reader.OnException       += Disconnect;
            _reader.OnMessageReceived += OnMessageReceived;
            _reader.Start();

            _writer                = new TcpClientWriter(_client);
            _writer.OnException   += Disconnect;
            _writer.OnMessageSent += () => { MessageSent?.Invoke(this); };
            _writer.Start();

            if (string.IsNullOrEmpty(Name))
            {
                Name = _client.Client.RemoteEndPoint.As <IPEndPoint>()?.Address.ToString() ?? "";
            }
        }
Beispiel #3
0
        /// <summary>
        /// Creates the TcpClientReader and TcpClientWriter
        /// </summary>
        /// <param name="remoteEndPoint">The remote server address</param>
        private void FinalizeConnection(IPEndPoint remoteEndPoint)
        {
            _networkStream             = _client.GetStream();
            _reader                    = new TcpClientReader(_client);
            _reader.OnException       += Disconnect;
            _reader.OnMessageReceived += OnMessageReceived;
            _reader.Start();

            _writer                = new TcpClientWriter(_client);
            _writer.OnException   += Disconnect;
            _writer.OnMessageSent += (message) => { DataSent?.Invoke(this, message); };
            _writer.Start();


            //Name = Guid.NewGuid().ToString() + "." + _client.Client.RemoteEndPoint.As<IPEndPoint>()?.Address.ToString() ?? "";
            Name = RemoteEndPoint.ToString();
            //var ipEndPoint = RemoteEndPoint;
            //if (ipEndPoint != null)
            //    Name = ipEndPoint.Address.ToString() + ":" + ipEndPoint.Port.ToString();
        }
Beispiel #4
0
        /// <summary>
        /// Disconnects from the remote server and cleans up resources
        /// </summary>
        /// <param name="e">An exception if one occurred</param>
        public void Disconnect(Exception e = null)
        {
            if (_client == null)
            {
                return;
            }
            //var remoteEndPoint = _client.Client.RemoteEndPoint.As<IPEndPoint>(); //retain a reference
            _reader?.Stop();
            _reader = null;
            _writer?.Stop();
            _writer = null;
            _networkStream?.Dispose();
            _networkStream = null;
#if NETSTANDARD1_3 || NETSTANDARD1_4
            _client?.Dispose();
#else
            _client?.Close();
#endif
            _client = null;
            OnDisconnected(RemoteEndPoint, e);
        }