Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C#] Перебор всех ip адресов из диапазона 
:(
    Опции темы
Apelsin
Дата 20.4.2009, 09:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 20.4.2009

Репутация: нет
Всего: 1



Подскажите пожалуйста, как реализовать цикл для перебора ип адресов из диапазона?
Например:
192.168.1.20 - 192.168.2.40
Код

string[] ipStart = txtStartIP.Text.Split('.');
string[] ipEnd = txtEndIP.Text.Split('.');

           for (int i1 = Int32.Parse(ipStart[0]); i1 <= Int32.Parse(ipEnd[0]); i1++)
                for (int i2 = Int32.Parse(ipStart[1]); i2 <= Int32.Parse(ipEnd[1]); i2++)
                    for (int i3 = Int32.Parse(ipStart[2]); i3 <= Int32.Parse(ipEnd[2]); i3++)
                        for (int i4 = Int32.Parse(ipStart[3]); i4 <= Int32.Parse(ipEnd[3]); i4++)

Вот такая конструкция тут не работает...
Если можно - очень подробно... Спасибо smile
PM MAIL   Вверх
mrbrooks
Дата 20.4.2009, 10:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 16
Всего: 306



Apelsin, можно так - если именно такие айпишники - в противном случае надо проверять подгруппы отдельно

Код

            string ip_start = "192.168.1.20";
            string ip_end = "192.168.2.40";
            string[] arr_start = ip_start.Split('.');
            string[] arr_end = ip_end.Split('.');
            ip_start = ip_start.Remove(ip_start.LastIndexOf(".") + 1);
            ip_end = ip_end.Remove(ip_end.LastIndexOf(".") + 1);
            for (int i = int.Parse(arr_start[3]); i <= 255; i++) Console.WriteLine(ip_start + i);
            for (int i = 1; i <= int.Parse(arr_end[3]); i++) Console.WriteLine(ip_end + i);

PM MAIL   Вверх
Apelsin
Дата 20.4.2009, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 20.4.2009

Репутация: нет
Всего: 1



Блин, таким образом как я понял очень неудобно перебирать ip.
Если начальный ип перевести в число и конечный ип перевести число, организовать цикл от начального до конечного и в цикле текущее значение ип переводить в строку - будет оч удобно.
Но есть но.
вот оно:
Код

for(long i1=   Int32.Parse(ipStart[0])*256*256*256+
                           Int32.Parse(ipStart[1])*256*256+
                           Int32.Parse(ipStart[2])*256+
                           Int32.Parse(ipStart[3]);

                      i1<= Int32.Parse(ipEnd[0])*256*256*256+
                           Int32.Parse(ipEnd[1])*256*256+
                           Int32.Parse(ipEnd[2])*256+
                           Int32.Parse(ipEnd[3]);
                           i1++)
{
и тут уже i1 переводить обратно в строчку и (для моего случая) пинговать его...
}

но значение выраженное жирным почему-то не помещается в лонг... Я себя чувствую идиотом... Где ошибка?smile
веть длина ип = 32 байта?!

Это сообщение отредактировал(а) Apelsin - 20.4.2009, 18:05
PM MAIL   Вверх
mrbrooks
Дата 20.4.2009, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 16
Всего: 306



Цитата(Apelsin @  20.4.2009,  18:02 Найти цитируемый пост)
Если начальный ип перевести в число и конечный ип перевести число, организовать цикл от начального до конечного и в цикле текущее значение ип переводить в строку - будет оч удобно.

Не буду утверждать что парсинг строки - оптимальное решение, но твое решение - это жесть. smile 

Цитата(Apelsin @  20.4.2009,  18:02 Найти цитируемый пост)
но значение выраженное жирным почему-то не помещается в лонг... Я себя чувствую идиотом... Где ошибка?

я не понимаю зачем ты так делаешь.


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0495 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.