![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как узнать IP-адрес компьютера? [D7, WinXP]
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.