Как более эффективно рассчитать количество IP-адресов от 2-х IP-адресов? - PullRequest
0 голосов
/ 15 февраля 2012

Я работаю над приложением pinging, в котором у меня есть индикатор выполнения, который отображает ход проверки ping для диапазона IP-адресов.

Вот как я вычисляю диапазон IP-адресов, чтобы установить в качестве максимального значения для индикатора выполнения:

pbProgress.Maximum = 1 + (IPAddress.NetworkToHostOrder
    (BitConverter.ToInt32(IPAddress.Parse(txtTo.Text).GetAddressBytes(), 0)) -
    IPAddress.NetworkToHostOrder(BitConverter.ToInt32
    (IPAddress.Parse(txtFrom.Text).GetAddressBytes(), 0)));

Проблема здесь в том, что я помещаю диапазон, начиная с 0.0.0.0 до 1.0.0.0, для вычисления диапазона требуется очень много времени, поэтому передается значение в максимальное значение индикатора выполнения.Есть ли лучшее решение для более быстрого расчета количества IP-адресов?

Я всегда могу установить ограничение на количество IP-адресов для пинга, например, до 10 тыс. Адресов, но я просто не хочу ограничивать какие-либо функции этой программы..

Есть идеи?

1 Ответ

1 голос
/ 15 февраля 2012

Ваша проблема в том, что вы создаете некоторую структуру данных, такую ​​как список или массив, содержащий каждый из IP-адресов.Все, что вам нужно сделать, это перебрать их с чем-то вроде цикла for, чтобы они генерировались по мере необходимости, а не перед началом.

Поскольку вы хотите использовать несколько потоков, попробуйте использовать что-то вроде Parallel.For.

...