Ejemplo n.º 1
0
        /**
         * Async callback that gets called when we have read something from the stream.
         */
        private void OnRead(IAsyncResult ar)
        {
            try
            {
                var     lengthPreFix  = BitConverter.ToInt32(buffer);
                var     receivedBytes = ReadTotalBytes(lengthPreFix);
                dynamic receivedData;

                if (keyExchanged)
                {
                    receivedData = JsonConvert.DeserializeObject(decryptor.DecryptAes(receivedBytes, 0, lengthPreFix));
                }
                else
                {
                    var receivedText = Encoding.ASCII.GetString(receivedBytes, 0, lengthPreFix);
                    receivedData = JsonConvert.DeserializeObject(receivedText);
                }

                HandleData(receivedData);
                stream.BeginRead(buffer, 0, buffer.Length, OnRead, null);
            }
            catch (IOException)
            {
                OnDisconnect();
            }
        }