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

Выделить из IP адреса номер сети и номер узла - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 62, средняя оценка - 4.98
MerlinLegend
1 / 1 / 0
Регистрация: 11.04.2011
Сообщений: 109
04.05.2011, 22:14     Выделить из IP адреса номер сети и номер узла #1
Здравствуйте. Помогите с задачей
Получить в качестве аргумента IP адрес и маску. Выделить из IP адреса номер сети и номер узла. Выяснить входит ли текущий компьютер в заданную сеть. Заранее спасибо. Каждого помощь мне очень важна. Это у меня РГР по программированию
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.05.2011, 22:14     Выделить из IP адреса номер сети и номер узла
Посмотрите здесь:

C++ Массив 5х5. (Вывести на экран номер строки и столбца и адреса...)
C++ Найти порядковый номер слова максимальной длины в строке и номер позиции, с которой оно начинается
C++ Массив 5х5. (Вывести на экран номер строки и столбца и адреса.) C++
C++ Дан номер года, определить соответствующий ему номер столетия
C++ Необходимо найти номер строки и номер столбца, в которых находится наименьший элемент.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
05.05.2011, 07:10     Выделить из IP адреса номер сети и номер узла #2
Существует два способа деления айпишника на части: на основе классов сетей и без их использовнаия. Если используются классы стей, то их всего 3:
A. Первый байт - номер сети, три последних - номер узла.
B. Первые два байта - номер сети, два последних - номер узла.
C. Первый три байта - номпер сети, один последнйи - номер узала.
Для каждого из трёх классов есть свой диапазон значений первого байта:
A. От 1 до 126.
B. От 128 до 191.
C. От 192 до 223.
Сеть номер 127 - зрекальная сеть A класса, в которой первый байт - номер сети, последние три - номер узла и все номера принадлежат одному узлу. В этой сети все пакеты возвращаются отправителю. А создана она для локальных тестов сетевых программ. Остальные значения первого байта зарезервированы. При бескласовой адресации деление определяется маской, но есть три правила:
1. Биты номера сети с битами номера узла не смешиваются.
2. Сеть номер 127 остаётся зеркальной сетью A класса.
3. Адрес начинается с номер сети, а завершается номером узла.
Маска же задаёт разбиение адреса так: единичные биты её двоичной записи отмечают биты номера сети, а нулевые - номера узла. Классы сетей имеют стандартные маски:
A. 255.0.0.0 (в двоичной форме 11111111.00000000.00000000.00000000).
B. 255.255.0.0 (в двоичной форме 11111111.11111111.00000000.00000000).
C. 255.255.255.0 (в двоичной форме 11111111.11111111.11111111.00000000).
MerlinLegend
1 / 1 / 0
Регистрация: 11.04.2011
Сообщений: 109
05.05.2011, 20:54  [ТС]     Выделить из IP адреса номер сети и номер узла #3
Это очень ценная информация. А как мне ее на языке Си написать?
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
06.05.2011, 04:24     Выделить из IP адреса номер сети и номер узла #4
C
1
2
3
4
    int o[4];
 
    scanf("%d.%d.%d.%d", o, o + 1, o + 2, o + 3);
    printf("%d.%d.%d.%d\n", o[0], o[1], o[2], o[3]);
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
06.05.2011, 06:02     Выделить из IP адреса номер сети и номер узла #5
C++
1
2
3
4
5
6
7
8
9
void (unsigned small int *ip, unsigned small int *mask, unsigned small int *net, unsigned small int *host) // Все параметры - указатели на массивы по 4 байта, тип unsigned small int - беззнаковое однобайтное целое, если ваш компил не поддерживает имеенно этого имени типа, то замените его на другое
{
 unsigned small int *i, *m, *n, *h);
 for (i=ip+3, m=mask+3, n=net+3, h=host+3; i>=ip; --i, --m, --n, --h)
 {
  *n=(*i)&(*m);
  *h=(*i)&(!(*m));
 }
}
Yandex
Объявления
06.05.2011, 06:02     Выделить из IP адреса номер сети и номер узла
Ответ Создать тему
Опции темы

Текущее время: 16:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru