Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как узнать IP-адрес компьютера? [D7, WinXP]


Страницы:   1 2 3

Calibr ©   (2006-08-20 21:28:00) 

Как узнать IP-адрес компьютера?


  (2006-08-25 13:53:00) [1]

Удалено модератором


Rouse_   (2006-08-24 12:25:00) [2]

Мдя, как говориться, шиза косила наши ряды :)

> Кабель отсоединен. Соединение активно.

С кем активно?

> А в посте [37] не ты вопрос написал/задал?
Ты слышал когда нибудь такое понятие как MS TCP Loopback interface, или адаптер типа не MIB_IF_TYPE_ETHERNET, а MIB_IF_TYPE_LOOPBACK?
Следи за моими губами, отключаем все соединения, а потом выполняем следующий код:

procedure TEventLogDemoMainForm.Button1Click(Sender: TObject);
type
 TMibIfRow = packed record
   wszName            : array[0..255] of WideChar;
   dwIndex            : DWORD;
   dwType             : DWORD;
   dwMtu              : DWORD;
   dwSpeed            : DWORD;
   dwPhysAddrLen      : DWORD;
   bPhysAddr          : array[0..7] of Byte;
   dwAdminStatus      : DWORD;
   dwOperStatus       : DWORD;
   dwLastChange       : DWORD;
   dwInOctets         : DWORD;
   dwInUcastPkts      : DWORD;
   dwInNUCastPkts     : DWORD;
   dwInDiscards       : DWORD;
   dwInErrors         : DWORD;
   dwInUnknownProtos  : DWORD;
   dwOutOctets        : DWORD;
   dwOutUCastPkts     : DWORD;
   dwOutNUCastPkts    : DWORD;
   dwOutDiscards      : DWORD;
   dwOutErrors        : DWORD;
   dwOutQLen          : DWORD;
   dwDescrLen         : DWORD;
   bDescr             : array[0..255] of Char;
 end;
 TMibIfArray = array [0..512] of TMibIfRow;
 PMibIfRow = ^TMibIfRow;
 PMibIfArray = ^TMibIfArray;

type
 TMibIfTable = packed record
   dwNumEntries     : DWORD;
   Table            : TMibIfArray;
 end;
 PMibIfTable = ^TMibIfTable;

const
 MIB_IF_TYPE_LOOPBACK  = 24;

var
 GetIfTable: function(pIfTable: PMibIfTable;
   pdwSize: PULONG; bOrder: Boolean): DWORD; stdcall;

 FLibHandle : THandle;
 Table: TMibIfTable;
 i : integer;
 Size   : integer;
begin

 FLibHandle := LoadLibrary('IPHLPAPI.DLL');
 if FLibHandle = 0 then Exit;
 @GetIfTable := GetProcAddress(FLibHandle, 'GetIfTable');
 if not Assigned(GetIfTable) then
 begin
   FreeLibrary(FLibHandle);
   Exit;
 end;

 Size := SizeOf(Table);
 if GetIfTable(@Table, @Size, false ) = 0 then
   for i:= 0 to Table.dwNumEntries-1 do
     if Table.Table[I].dwType = MIB_IF_TYPE_LOOPBACK then
     begin
       ShowMessage('Можно работать с адресом 127.0.0.1');
       Exit;
     end;
 FreeLibrary(FLibHandle);
end;


saxon   (2006-08-24 11:31:00) [3]


> Rouse_ ©   (24.08.06 10:12) [45]

А в посте [37] не ты вопрос написал/задал?


n0name   (2006-08-24 10:45:00) [4]


> Какое соединение? Кабель выдернут...

Кабель отсоединен. Соединение активно.


Rouse_   (2006-08-24 10:12:00) [5]


> Так а че за вопросы тогда такие?

Чудак, ты гдето видел, что я задал вопрос?


saxon   (2006-08-23 14:48:00) [6]


> Rouse_ ©   (23.08.06 14:19) [43]

Так а че за вопросы тогда такие?


Rouse_   (2006-08-23 14:19:00) [7]


> saxon   (23.08.06 14:13) [42]

Послушай, не нужно мне обьяснять что нужно сделать, я это и так знаю.


saxon   (2006-08-23 14:13:00) [8]


> Rouse_ ©   (23.08.06 13:26) [41]

Открой свойства network connections (всех), сделай Disable.
По не руски потому как нет такой OS.


Rouse_   (2006-08-23 13:26:00) [9]


> Да. Я всегда думал что уникальность сетевого оборудования
> выражается в MAC-адресе.

Ты ни разу не видел свичей с IP адресом?
> Дык соединения то существует.
Какое соединение? Кабель выдернут...
Плюс к этому у одного интерфейса может быть несколько IP адресов.


Сергей М.   (2006-08-23 12:54:00) [10]


> n0name   (23.08.06 12:30) [39]



> IP не у сетевого интерфейса, а задется в сетевом подключении


При регистрации и настройке сетевого подключения как раз и происходит регистрация и настройка сетевых интерфейсов, с которыми это подключение будет ассоциировано.

Одно и то же сет.подключение м.б. ассоциировано с одним или более сет.интерфесов. Разумеется, если временно отключено, ни один из интерфейсов, ассоциированных с этим подключением, не доступен, не говоря уже о параметрах интерфейса.


n0name   (2006-08-23 12:30:00) [11]


> Естественно, для тебя это откровение что оборудование может
> иметь собственный IP адрес без всякого сетевого подключения?
>

Да. Я всегда думал что уникальность сетевого оборудования выражается в MAC-адресе.

> Странно, выдернул кабель - IP определяется, что я делаю
> не так?

Дык соединения то существует. Отключи его и не определится.


saxon   (2006-08-23 11:14:00) [12]


> Странно, выдернул кабель - IP определяется, что я делаю
> не так?

Не задизаблили (:)) все локал соединение.


Rouse_   (2006-08-23 10:58:00) [13]


> > Когда ты не в сети, IP ты не узнаешь.
>
> Как узнать? Ни через IpHlpAPI, ни через winsock у меня не
> получилось обнаружить реальный IP.

Странно, выдернул кабель - IP определяется, что я делаю не так?


> > PS: IP не у сетевого интерфейса, а задется в сетевом подключении.
> Ты возражаешь против этого?

Естественно, для тебя это откровение что оборудование может иметь собственный IP адрес без всякого сетевого подключения?


n0name   (2006-08-23 09:49:00) [14]


> Отец Кондратий   (23.08.06 08:16) [35]

У нас в сети динамическое распределение IP, так что вышеизложенный способ не подойдет.


Отец Кондратий   (2006-08-23 08:16:00) [15]

To n0name
> Когда ты не в сети, IP ты не узнаешь.

>Как узнать? Ни через IpHlpAPI, ни через winsock у меня не получилось >обнаружить реальный IP.

> PS: IP не у сетевого интерфейса, а задется в сетевом подключении.

>Ты возражаешь против этого?

Я тоже возражаю, если никто не против... Переставим слова в Вашем посте и получим ответ: IP адрес сетевого интерфейса задаётся в сетевом подключении!
Касаемо IP адреса: IP на интерфейсеможно запросто узнать даже без подключения к сети если считать из реестра содержимое ключа GUID, соответствующее этому интерфейсу (IPAddress -> REG_MULTI_SZ).


n0name   (2006-08-22 19:02:00) [16]


> Когда ты не в сети, IP ты не узнаешь.

Как узнать? Ни через IpHlpAPI, ни через winsock у меня не получилось обнаружить реальный IP.

> PS: IP не у сетевого интерфейса, а задется в сетевом подключении.

Ты возражаешь против этого?


Rouse_   (2006-08-22 18:13:00) [17]


> Где конкретно?

Да собственно весь твой пост глупость.
Зачем говорить о тех вещах в которых не разбираешся?


n0name   (2006-08-22 17:47:00) [18]


> Глупости.

Где конкретно?


Rouse_   (2006-08-22 16:46:00) [19]

Тот который выдал тебе провайдер? Достучаться до его роутера через SNMP и спросить: http://www.sources.ru/protocols/snmp_learning.shtml
Если не даст доступа (что скорее всего и будет) запросить у внешнего сервиса, к примеру http://f10.net.ru/страничку из которой можешь выдрать данную информацию элементарным парсингом...


derex   (2006-08-22 16:30:00) [20]

В первом посту выыодится локальный ip в сети
А каким образом можно узнать его инетовский динамический ip.


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо