Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.79
ak74m
0 / 0 / 0
Регистрация: 09.04.2009
Сообщений: 5
#1

Реализовать перебор всех возможных IP-адресов (С++) - C++

09.04.2009, 14:55. Просмотров 2495. Ответов 18
Метки нет (Все метки)

Реализовать перебор всех возможных IP-адресов, начиная с 0.0.0.0, заканчивая 255.255.255.0. (проще говоря перебор всех возможных комбинаций четырех целых чисел в интервале 0;255)если кто может, пожалуйста помогите.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.04.2009, 14:55
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Реализовать перебор всех возможных IP-адресов (С++) (C++):

Перебор и вывод всех возможных сочетаний - C++
Итак,здравствуйте форумчане. Привела меня к вам интересная задачка. Вводится слово,заранее не известно количество букв необходимо...

Организовать перебор всех возможных сочетаний - C++
Затрудняюсь с алгоритмом. Как можно организовать перебор всех возможных группировок? Имеется несколько романов одного писателя. Для...

Перебор всех возможных сочетаний заданных переменных - C++
Чтобы не создавать новую тему, напишу здесь. Есть несколько переменных - около 20, часть переменных может иметь 2 значения, часть - три...

Перебор всех возможных подмножеств множества целых чисел - C++
Всем привет)))) Пожалуйста, помогите решить задачку!!!!! Очень нужно, срочно!!! Программа перебора всех возможных подмножеств множества...

Перебор всех возможных подмножеств заданного множества целых чисел - C++
Помогите решить задачу. Есть заданное множество целых чисел: -1 0 1. Нужно перебрать все возможные способы размещения в векторе, этих...

Перебор всех возможных вариантов с переменными приравненных к определенному значению - C++
Помогите решить задачу: Есть 3 переменные А, В, С и у каждого из них какое-то целочисленное значение, которое задает пользователь. Нужно...

18
Deicider
96 / 52 / 1
Регистрация: 18.03.2009
Сообщений: 273
09.04.2009, 14:58 #2
Просто в цикле:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int i, j, k, m;
for (i = 0; i < 256; i++)
{
    for (j = 0; j < 256; j++)
    {
        for (k = 0; k < 256; k++)
        {
            for (m = 0; m < 256; m++)
            {
                // тут делаем то, что нужно сделать с этими числами
            }
        }
    }
}
Будь готов к длительному времени выполнения такого цикла. Комбинаций, как видишь, 4 294 967 296 штук!
0
ak74m
0 / 0 / 0
Регистрация: 09.04.2009
Сообщений: 5
09.04.2009, 15:18  [ТС] #3
Deicider спасибо, но както все просто выглядит, счас попробуем.
и еще вопрос в какой компонент можно вывести 4 числа, разделенных точками? ну и желательно как это делается.(в мемо чтото не получается)
0
Deicider
96 / 52 / 1
Регистрация: 18.03.2009
Сообщений: 273
09.04.2009, 15:21 #4
Да, всё действительно просто ))
Насчет компонента не совсем понял вопрос. Ты собираешься выводить куда-то все четыре миллиарда комбинаций???
0
YurA_280784
Заблокирован
09.04.2009, 15:24 #5
В MFC в контролах есть прям такой єлементик называется IP adres...
0
ak74m
0 / 0 / 0
Регистрация: 09.04.2009
Сообщений: 5
09.04.2009, 16:49  [ТС] #6
Deicider упаси господь =)), только которые условию удовлетворяют
YurA_280784 спасибо

Добавлено через 1 час 16 минут 56 секунд
Deicider, а сколько примерно по времени будет это все выполнятся? а то пошла уже 24ая наверно минута, чтото не так я думаю.
0
Deicider
96 / 52 / 1
Регистрация: 18.03.2009
Сообщений: 273
09.04.2009, 17:07 #7
Ну 24 минуты это долговато, конечно, хотя если комп слабый, то и такое возможно. Плюс зависит от того, что ты в цикле делаешь. Если ты там порты сканируешь в больших количествах, то можешь даже не ждать что цикл завершится в этом году )))))
0
ak74m
0 / 0 / 0
Регистрация: 09.04.2009
Сообщений: 5
09.04.2009, 17:13  [ТС] #8
Deicider, да не там плюсик образовался, она оказывается просто висела=)))все работает замечательно.
про компонент куда вывести одной строкой четыре числа через точку не подскажешь?
0
YurA_280784
Заблокирован
09.04.2009, 17:23 #9
C++
1
2
CIPAdressCtrl m_ipadr1;
m_ipadr1.SendMessage(IPM_SETADDRESS,0,MAKEIPADDRESS(192,178,125,32));
Это для MFC
ну а если в консоли напечатать то
C++
1
printf("IP : %d.%d.%d.%d",i, j, k, m);
ak74m уточни твой проект консоль, api, mfc???
0
ak74m
0 / 0 / 0
Регистрация: 09.04.2009
Сообщений: 5
09.04.2009, 21:12  [ТС] #10
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
#include <iostream.h>
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int i,j,k,l;
 
  for(i=0;i<256;i++)
     {
        for(j=0;j<256;j++)
        {
             for(k=0;k<256;k++)
             {
                  for(l=0;l<256;l++)
                  {
 
 
                  ClientSocket1->Host=IntToStr(i)+"."+IntToStr(j)+"."+IntToStr(k)+"."+IntToStr(l);
                  ClientSocket1->Active=true;
                  if (ClientSocket1->Socket->Connected)
                  {
                  Memo1->Lines->Add(IntToStr(i)+"."+IntToStr(j)+"."+IntToStr(k)+"."+IntToStr(l)+" on-line");
                  }
                  ClientSocket1->Active=false;
                   }
               }
          }
       }
                  
}
//---------------------------------------------------------------------------
 
 
//---------------------------------------------------------------------------
 
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Memo1->Clear();
Memo2->Clear();
 
}
//---------------------------------------------------------------------------

Вот вобщем написал, но при выполнение вылетает ошибка
[img]C:\Documents and Settings\ak74m\Мои документы\Мои рисунки\12121[/img]
0
Rise of Death
1 / 1 / 0
Регистрация: 10.03.2009
Сообщений: 24
10.04.2009, 11:06 #11
4 294 967 296
ЭТо если на каждый всреднем нужно 8 байт (3 группы по 4 цифры + 3 точки + конец строки), если писать как текст, то в итоге полдучается 64 Гб
0
Tiami
Яростный кот
-4 / 1 / 1
Регистрация: 10.03.2009
Сообщений: 220
10.04.2009, 12:52 #12
Цитата Сообщение от Deicider Посмотреть сообщение
Просто в цикле:
А обясни почему цикл не выполняет сразу 4 операции
а ток сначала
1-255.0.0.1-255(цикл идет тут) и в том месте перебирается,а не сразу чтобы))
1-255.1-255.1-255.1-255
Не понимаю обясни етот Цикл просто интересно
Ну то есть не сразу 4 числа перебирает
0
Monte-Cristo
2789 / 1375 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
10.04.2009, 13:18 #13
Tiami, всмысле? цикл, при первых трех нулях перебирает четвертое значение от 0 до 255...предпоследнее значени становится 1, последнее сново от 0 до 255...
получатеся что-то типа:

0.0.0.0
0.0.0.1
0.0.0.2
0.0.0.3
...
0.0.0.255
0.0.1.0
0.0.1.1
0.0.1.2
...
0.0.1.255
0
Tiami
Яростный кот
-4 / 1 / 1
Регистрация: 10.03.2009
Сообщений: 220
10.04.2009, 17:55 #14
Цитата Сообщение от Monte-Cristo Посмотреть сообщение
Tiami, всмысле? цикл, при первых трех нулях перебирает четвертое значение от 0 до 255...предпоследнее значени становится 1, последнее сново от 0 до 255...
получатеся что-то типа:
Да не Почему не перебираются сразу 4 цифры
то есть вот так
1.1.1.1
А перебирается почему то так
1.0.0.1
2.0.0.1
3.0.0.1
..........
256.0.0.1
и потом уже
1.0.0.2
Почему цикл не перебирает так
1.1.1.1
2.2.2.2
Вот не понимаю Как действует етот цикл
0
.::.DIMA.::.
143 / 143 / 4
Регистрация: 26.10.2008
Сообщений: 782
10.04.2009, 18:03 #15
Ессли ты имеешь ввиду этот цикл:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int i, j, k, m;
for (i = 0; i < 256; i++)
{
        for (j = 0; j < 256; j++)
        {
                for (k = 0; k < 256; k++)
                {
                        for (m = 0; m < 256; m++)
                        {
                                // тут делаем то, что нужно сделать с этими числами
                        }
                }
        }
}
То сначала i = 0, k = 0, и m пробегает свои значения и т.д.
Когда что-то непонятно, нажимай F10 и смотрири как выполняется программа
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.04.2009, 18:03
Привет! Вот еще темы с ответами:

Перебор всех возможных способов размещения n различных предметов по m различным ящикам - C++
Ребят, я на этом форуме не очень давно и хочу попросить помощи, Задача такого рода: написать программу перебора всех возможных способов...

Реализовать алгоритм всех возможных комбинаций восьми ферзей - C++
Доброго времени суток! Мне стыдно задавать такой вопрос, но всё же, как реализовать алгоритм всех возможных комбинаций восьми ферзей? ...

Перебор возможных вариантов разреза трубы - C++
Доброго времени суток! Есть задача:&quot;Вводится длина трубы, количество заготовок (1 .. 5), которые можно вырезать из трубы, и длина каждой...

Перебор возможных значений для трёх чисел - C++
Доброго времени суток. Нужно перебрать все возможные значения трёх чисел. их сума равна 1. перебрать нужно с шагом 0,01, например 0,01...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Yandex
Объявления
10.04.2009, 18:03
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru