Exemplo n.º 1
0
        } //

        private void LoopRead()
        {
            while (!_ExitLoop)
            {
                try {
                    ProtoBufExample.Header lHeader = ProtoBuf.Serializer.DeserializeWithLengthPrefix <ProtoBufExample.Header>(_NetworkStream, ProtoBuf.PrefixStyle.Fixed32);
                    if (lHeader == null)
                    {
                        break;
                    }
                    if (lHeader.objectType == ProtoBufExample.eType.eError)
                    {
                        ProtoBufExample.ErrorMessage lErrorMessage = ProtoBuf.Serializer.DeserializeWithLengthPrefix <ProtoBufExample.ErrorMessage>(_NetworkStream, ProtoBuf.PrefixStyle.Fixed32);
                        lHeader.data = lErrorMessage;
                    }
                    _PendingFeedbacks.Remove(lHeader);
                }
                catch (System.IO.IOException) {
                    if (_ExitLoop)
                    {
                        Console.WriteLine("user requested client shutdown");
                    }
                    else
                    {
                        Console.WriteLine("disconnected");
                    }
                }
                catch (Exception ex) { Console.WriteLine(ex.Message); }
            }
            Console.WriteLine("client: reader is shutting down");
        } //
Exemplo n.º 2
0
        // demo: synchronous processing
        static void OnMessageFable(TcpClient xSender, ProtoBufExample.Header xHeader, ProtoBufExample.Fable xFable)
        {
            Console.WriteLine(Environment.NewLine + "received a fable: ");
            Console.WriteLine(xFable.ToString());

            // demo: we tell the server that something went wrong
            ProtoBufExample.ErrorMessage lErrorMessage = new ProtoBufExample.ErrorMessage()
            {
                Text = "The fable was rejected. It is far too short."
            };
            ProtoBufExample.Header lErrorHeader = new ProtoBufExample.Header(lErrorMessage, ProtoBufExample.eType.eError, xHeader.serialMessageId);
            NetworkListener.Send(xSender, lErrorHeader);
        } //