Форум программистов, компьютерный форум, киберфорум
Delphi: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.79/324: Рейтинг темы: голосов - 324, средняя оценка - 4.79
17 / 14 / 3
Регистрация: 16.09.2008
Сообщений: 335

Как узнать свой IP в локальной сети?

17.01.2009, 01:31. Показов 64446. Ответов 27
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как мне узнать свой IP в локалке, не в сети интернет а именно в локалке, что получить типа 192.168.x.x !!!
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.01.2009, 01:31
Ответы с готовыми решениями:

Как демонстрировать свой экран по локальной сети
Здравствуйте, вот столкнулся с проблемой: реально ли демонстрировать экран по локалке? Если да то в какую сторону рыть, или какие...

Как узнать IP-адрес компьютера в локальной сети
Как программно узнать IP? То есть на форме есть кнопка и текстбокс, как сделать чтобы при нажатии на кнопку в на кнопку, в текстбоксе...

Как узнать количество компьютеров в локальной сети?
Windows 7 - создал сеть компьютер-компьютер (для раздачи интернета). Знаю, что подключено 2 пк, но так как скорость маловата, есть...

27
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
30.12.2015, 11:16
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от McFlyA Посмотреть сообщение
Address:=PInAddr(HostEntry^.h_addr_list^)^; Result:=inet_ntoa(Address);
Там их целый список адресов может быть, почему возвращается только первый в списке ?
0
0 / 0 / 0
Регистрация: 30.12.2015
Сообщений: 4
30.12.2015, 11:53
В более старых версиях этой функции адрес возвращался вообще один. Потом сделали список, и для поддержки старых версий макрос h_addr возвращает h_addr_list[0].
Вопрос звучал :
Как мне узнать свой IP в локалке, не в сети интернет а именно в локалке, что получить типа 192.168.x.x !!!
поэтому и код приведен как получить первый из адресов.

Но возвращается реально список, кому нужно можно немного дописать функцию таким образом :

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
type
  TaPInAddr = array[0..250] of PInAddr;
  PaPInAddr = ^TaPInAddr;
  end;
 
 function NET_GetLocalIPS:String;
 var Error:DWORD;HostEntry:PHostEnt;Address:In_Addr;Buffer:array [0..63] of Char;
    LPAdrPtr: PaPInAddr; Li:Integer;
 begin
 GetHostName(Buffer,SizeOf(Buffer));
 HostEntry:=gethostbyname(Buffer);
 Error:=GetLastError;
 if Error=0 then
  begin
  LPAdrPtr := PAPInAddr(HostEntry^.h_addr_list);
  Li := 0;
  while (LPAdrPtr^[Li] <> nil) and (Li<251) do begin
   Address:=PInAddr(LPAdrPtr^[Li])^;
   result:=result+inet_ntoa(Address)+',';
   inc(Li);
   end;
  end
 else Result:='';
 end;
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
30.12.2015, 12:05
Цитата Сообщение от McFlyA Посмотреть сообщение
поэтому и код приведен как получить первый из адресов
И опять - почему первый-то ?

В этом списке все адреса являются адресами хоста в каждой из локальных сетей, членом которых является хост.

Отсюда и контрвопрос - адрес в какой конкретно из них требуется узнать ?
0
5997 / 4572 / 1096
Регистрация: 29.08.2013
Сообщений: 28,238
Записей в блоге: 3
30.12.2015, 12:11
McFlyA, а если у меня в компе 4 сетевухи и все в локалке, но в разных подсетях?
а если еще 2 Wifi карты, при чем они рабочие, но к сети не подключены
а еще есть USB сетевые карты

корректно будет получить все сетевые интерфейсы и выдать их с IP адресами (при этом оставить только класс С)
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
30.12.2015, 12:33
Цитата Сообщение от qwertehok Посмотреть сообщение
(оставить только класс С)
Чтой-то вдруг ?
Адресация в конкретном сегменте конкретной лок.сети может как относиться к любому ветхозаветному классу, так и вообще быть бесклассовой..
0
0 / 0 / 0
Регистрация: 30.12.2015
Сообщений: 4
30.12.2015, 13:18
Ну можно еще и все внешние адреса показать, поставив сервис на внешке где-нить и обратившись к нему.
И заодно все шлюзы собрать, которые по-пути встречаются. Но вопрос был получить свой внутренний IP.
Первый пример возвращает ОДИН IP, первый в сетевых подключениях (в настройках выбирается какой первый будет).
Второй пример возвращает все IP адреса через запятую.
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
30.12.2015, 13:46
Цитата Сообщение от McFlyA Посмотреть сообщение
Но вопрос был получить свой внутренний IP
Но в вопросе не было ничего про учет настроек порядка следования сет.интерфейсов.

Цитата Сообщение от McFlyA Посмотреть сообщение
Первый пример возвращает ОДИН IP
Какой из них, если к примеру у меня с единственным сет.интерфейсом ассоциированы куча адресов в той же подсети ?
0
0 / 0 / 0
Регистрация: 30.12.2015
Сообщений: 4
31.12.2015, 22:25
В сетях нет жестких требований к делению на локальные и глобальные. Я на сетевухе и на своем DHCP могу поставить любую сеть, за исключением 127.х.х.х (и еще нескольких, зарезервированных). Есть общие правила и рекомендации (классы подсетей А, B, C, D, E). И определить, какой именно IP пользователь хочет в данный момент, задав какой-то алгоритм перебора, вряд ли получится. Поэтому приведенного кода хватит на 95% систем (в корпоративном секторе, где юзеры часто ходят в инет через роутер и имеют на машине всего 1 сетевуху и вообще 99%). А на оставшиеся 5% вернее всего будет доработать прогу напильником, добавив окно выбора нужного IP. Но если надеетесь написать какой-то код, который будет определять-таки какой из возможного множества IP на машине в данном конкретном случае нужен пользователю - обязательно напишите мне.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
31.12.2015, 22:25
Помогаю со студенческими работами здесь

Как узнать, какие компьютеры в локальной сети?
Подскжате пожалуйста как узнать какие компьютеры в локальной сети? Самым лучшим ответом будет исходник.

Как узнать количество подсетей в локальной сети
Преподаватель дал задание узнать количество подсетей в университете. Вы не могли бы подсказать, как это можно сделать или же это не...

Как узнать DNS компа в локальной сети?
Делаю статистику по логам, в логах указан ip адрес. Соответственно в БД тоже ip хранится. Пользователю предоставляется возможность выбрать...

Как узнать ip-адрес всех компьютеров в локальной сети?
Добрый день ребята! хочу написать на Delphi что бы программа смотрел все компьютере локальная сеть и отображал IP Адрес. На одном написал...

Как узнать имя или ip адрес атакующего по локальной сети?
Представим, что в помещении есть 3 ПК и один из них решил пошутить и прописать shutdown, но программа блокирует его действие, это очень...


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

Или воспользуйтесь поиском по форуму:
28
Ответ Создать тему
Новые блоги и статьи
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений. . . .
21 мат мед. Планы на развитие модели здравоСохранения
anaschu 01.06.2026
AnyLogic: план развития симуляционной модели рабочего коллектива — динамический абсентеизм, реальные данные, три сценария сравнения Продолжаю серию постов о дискретно-событийной модели рабочего. . .
20. Мат мед. Абсентеизм как отдельный тип простоя
anaschu 29.05.2026
Апдейт модели: исправленные баги, абсентеизм и новые механизмы Продолжаю развивать ранее описанную модель рабочего коллектива на AnyLogic. За последние несколько дней был проведён серьёзный. . .
19. здоровье, усталость и психотип работника влияют на производительность предприятия, и наоборот, производительность на здоровье, усталось и психотип
anaschu 28.05.2026
Дискретно-событийная модель рабочего коллектива на AnyLogic: здоровье, выгорание, психотипы и микростимуляция Привет, коллеги. Хочу поделиться итогами нескольких недель работы над симуляционной. . .
"Прокси" для последовательного порта
Eddy_Em 28.05.2026
Эту штуку написал я достаточно давно. Но сейчас вот понадобилось настроить датчик грозы, но при этом не отключать его от "метеодемона". Соответственно, надо запустить этот "прокси": метеодемон будет. . .
Рефакторинг программы уравнивания.
Massaraksh7 26.05.2026
Пример по предыдущей записи в блоге. Но, надо заметить, что, во-первых, там оптимизация не только математики, но и работы с базой данных, и с графами, а во-вторых, это ещё не всё.
Использование TThread в Lazarus для математических вычислений.
Massaraksh7 25.05.2026
Производя рефакторинг своих программ на предмет ускорения их работы, обратил внимание на такой аспект, как сокращение времени матвычислений. Дело в том, что приходится работать с большими матрицами. . .
Модель здравосохранения 18. Чем здоровее работник, тем быстрее выгорает
anaschu 24.05.2026
Имитационная модель корпоративного здравоохранения: что показывает математика Сегодня в модели рабочего коллектива на AnyLogic появились три новые механики — выгорание через накопленную усталость,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru