Получение списка компьютеров в локальной сети

Приветствую!
Узнаю адреса компьютеров в локальной сети при помощи следующего кода:

Ping ping = new Ping();
...
String currentAddress = address + i.ToString();
PingReply res = ping.Send(currentAddress, 100);
if (res.Status == IPStatus.Success)
{
...
}

Компьютеры таким образом определяются корректно. А вот смартфоны и планшеты не находятся. При эом res = IPStatus.TimeOut. Т.е неотличимо от случая, когда такого узла бы не было в сети.
Есть ли способ найти и их?

На что указывает значение “100”?

Время ожидания ответа.
Пробовал его увеличивать и использовать метод без тайм-аута. При этом все равно смартфоны не находятся

Может такое быть что искомые гаджеты не входят в диапазон сканирования?

Нет.
Анализируется диапазон, например, 192.168.1.1 - 192.168.1.255. Смартфон имеет адрес 192.168.1.3 и не находится. Компы С 192.168.1.2 и 192.168.1.5 нормально обнаруживаются.

хм, странно, у меня работает, находит всё из списка в админке роутера.

Правда запускал на Линуксе (Mono).

using System;
using System.Net.NetworkInformation;

namespace ping
{
    class MainClass
    {
        public static void Main(string[] args)
        {
            Ping ping = new Ping();
            for (int i = 1; i < 254; i++)
            {
                String currentAddress = "192.168.1." + i;
                PingReply res = ping.Send(currentAddress, 100);
                if (res.Status == IPStatus.Success)
                {
                    Console.WriteLine(res.Address);
                }
            }
        }
    }
}

Хмм, теперь у себя запустил еще раз.
Предварительно открыв на телефоне приложение, использующее Интернет.
Теперь обнаруживается больше :slight_smile:
Не обнаруживается девайс на Windows Phone.
Также, если телефон некоторое время полежит не лезя в интернет, то он также не обнаруживается. А в админке роутера его видно.

В общем, иногда смартфоны отображаются при поиске, иногда - нет. Видимо это связано с тем, что они в неактивном состоянии периодически подключаются к сети, а потом отключаются (батарею экономят?).

По идее не должен отключать, иначе как оповещения дойдут. :thinking:

Гугл говорит, что есть такая опция на Андроиде, но не по умолчанию.

На iPhone у меня, например, так и настроено.
А на Андроиде у себя не нашел такой опции.

В общем, трабла была не в моем коде)