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(); }
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)); } }