public static IEnumerable <string> Hosts(IPAddressExt address)
 {
     for (var host = address.NetworkAddress + 1; host < address.BroadcastAddress; host++)
     {
         yield return(host.ToIpString());
     }
 }
        public async static Task <IEnumerable <string> > FindAliveHosts(IPAddressExt address)
        {
            return(await Task.Run(() =>
            {
                List <string> activeHosts = new List <string>();
                List <string> hosts = LocalNetwork.Hosts(address).ToList();

                Parallel.ForEach(hosts, host =>
                {
                    Ping pingSender = new Ping();

                    PingReply reply = pingSender.Send(host, 1500);
                    if (reply.Status == IPStatus.Success)
                    {
                        activeHosts.Add(reply.Address.ToString().GetHostName() + ":" + reply.Address.ToString());
                    }
                });

                return activeHosts;
            }));
        }