internal void AcceptNewHosts()
 {
     new Task(CheckForNewHostsSignal, TaskCreationOptions.LongRunning).Start();
     new Task(CheckForMessages, TaskCreationOptions.LongRunning).Start();
     while (IsCheckingForNewHosts)
     {
         try
         {
             var clientSocket = TcpSocket.Accept();
             clientSocket.Blocking = false;
             var client = new Client
             {
                 ClientSocket = clientSocket,
                 Ip = ((IPEndPoint)clientSocket.RemoteEndPoint).Address.ToString()
             };
             lock (ConnectionLock)
             {
                 Connections.Add(client);
             }
             new Task(() => SendCacheList(client.Ip)).Start();
         }
         catch (Exception)
         {
             // ignored
         }
     }
 }
 private static void TcpConnect(string iP)
 {
     if (iP == IpAddress)
     {
         return;
     }
     var destinationIp = IPAddress.Parse(iP);
     var endPoint = new IPEndPoint(destinationIp, TcpPortNumber);
     var client = new Client
     {
         ClientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp),
         Ip = iP
     };
     try
     {
         client.ClientSocket.Connect(endPoint);
         client.ClientSocket.Blocking = false;
         lock (ConnectionLock)
         {
             Connections.Add(client);
         }
     }
     catch (Exception ex)
     {
         Console.WriteLine(ex);
     }
 }