Пример #1
0
        static async Task Main(string[] args)
        {
            Console.WriteLine("Hello Server!");

            TCPSmartServer <ProtobufFrameWrapper <MessageBase>, MessageBase> server = new TCPSmartServer <ProtobufFrameWrapper <MessageBase>, MessageBase>(1111, () => new ProtobufFrameWrapper <MessageBase>(false));

            server.ConnectionStateEvent += OnConnection;
            server.FrameReadyEvent      += OnFrame;

            server.Start();

            while (true)
            {
                await Task.Delay(TimeSpan.FromSeconds(2));

                ChildMessage1 msg = new ChildMessage1()
                {
                    Name = DateTime.Now.ToLongTimeString()
                };
                server.Send2All(msg);

                if (Console.ReadKey().Key == ConsoleKey.Enter)
                {
                    break;
                }
            }

            await server.Stop();
        }
Пример #2
0
        static async Task Main(string[] args)
        {
            Console.WriteLine("Hello Client!");

            // Crear un Framewrapper. En este casi mi librería ya te da uno hecho para Protobuff que usa Serializer.SerializeWithLengthPrefix(memoryStreamTX, data, PrefixStyle.Base128);
            FrameWrapperBase <MessageBase> frameWrapper1 = new ProtobufFrameWrapper <MessageBase>(true);
            // Crear un TCPCommunicator al que le pasas el framewrapper que ha de usar
            IPSocketCommunicator <MessageBase> client1 = new IPSocketCommunicator <MessageBase>(frameWrapper1);
            // Creas una Uri con el Peer al que quieres conectar
            ConnUri uri1 = new ConnUri("tcp://127.0.0.1:1111");

            // Inicializas el Communicator con la Uri, si quieres q sea persistente (reconecte), el ID, y alguna cosita más
            client1.Init(uri1, true, "CLIENT1", 10000);

            // Te suscribes a los eventos de conexión del communicator y de frame (objeto) disponible del framewrapper
            frameWrapper1.FrameAvailableEvent += OnMessage1;
            client1.ConnectionStateEvent      += OnConnection1;
            client1.DataReadySyncEvent        += OnRawSyncData;
            client1.DataReadyAsyncEvent       += OnRawAsyncData;

            // inicias todo
            client1.Start();

            while (true)
            {
                await Task.Delay(TimeSpan.FromSeconds(1));

                ChildMessage1 msg = new ChildMessage1()
                {
                    Name = DateTime.Now.ToShortTimeString()
                };

                //TEST
                Dictionary <string, string> payload = new Dictionary <string, string>();
                payload.Add("Jesus", "Roci");
                msg.Payload = new DictionaryPayload {
                    DataDictionary = payload
                };

                _ = client1.SendAsync(msg);

                //while (true)
                //    await Task.Delay(TimeSpan.FromSeconds(1));
            }
        }