Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.01.28;
Скачать: CL | DM;

Вниз

Как узнать IP-адрес компьютера?   Найти похожие ветки 

 
Calibr ©   (2006-08-20 21:28) [0]

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


 
DprYg ©   (2006-08-20 21:34) [1]

uses
 WinSock;

function GetLocalIP: String;
const WSVer = $101;
var
 wsaData: TWSAData;
 P: PHostEnt;
 Buf: array [0..127] of Char;
begin
 Result := "";
 if WSAStartup(WSVer, wsaData) = 0 then begin
   if GetHostName(@Buf, 128) = 0 then begin
     P := GetHostByName(@Buf);
     if P <> nil then Result := iNet_ntoa(PInAddr(p^.h_addr_list^)^);
   end;
   WSACleanup;
 end;
end;


 
DrPass ©   (2006-08-20 21:50) [2]


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

127.0.0.1


 
Calibr ©   (2006-08-20 22:21) [3]

А что он у всех компов одинаковый чтоли?


 
Чапаев ©   (2006-08-20 23:08) [4]

Открою секрет: у компов не IP-адреса вовсе. Адрес бывает у сетевого интерфейса.


 
Чапаев ©   (2006-08-20 23:10) [5]

"не" в смысле "нет".


 
Мичман Панин   (2006-08-21 02:18) [6]

В военное время каждый компьютер должен знать и четко исполнять команду "Айпиконфиг". Вражеский компьютер допрашивается на иностранном языке: ipconfig.


 
Calibr ©   (2006-08-21 13:25) [7]


> Открою секрет: у компов не IP-адреса вовсе. Адрес бывает
> у сетевого интерфейса

Хорошо, как тогда узнать адрес сетевого интерфейса?


 
Сергей М. ©   (2006-08-21 13:33) [8]


> как тогда узнать адрес сетевого интерфейса?


Чем ipconfig.exe не устроил ?


 
Calibr ©   (2006-08-21 14:05) [9]


> Чем ipconfig.exe не устроил ?

127.0.0.1 чтоли? так от на всех компах одинаковый, а мне надо чтоб номер был только на одном компе.


 
Сергей М. ©   (2006-08-21 14:21) [10]

Вот результат работы IPCONFIG:

       DNS суффикс этого подключения . . :
       Описание  . . . . . . . . . . . . : &#9492;фряЄхЁ Realtek RTL8139(A) PCI Fast
Ethernet
       Физический адрес. . . . . . . . . : 00-55-B9-4D-77-7E
       DHCP разрешен . . . . . . . . . . : Нет
       IP-адрес  . . . . . . . . . . . . : 192.168.7.6
       Маска подсети . . . . . . . . . . : 255.255.255.0
       Основной шлюз . . . . . . . . . . : 192.168.7.111
       DNS-серверы . . . . . . . . . . . : 192.168.7.1
                                           192.168.7.111
       Основной WINS-сервер  . . . . . . : 192.168.7.1

Где ты здесь увидел 127.0.0.1 ?


 
Calibr ©   (2006-08-21 14:23) [11]

И что мне дает ipconfig.exe? Консольное окно мелькнуло и все, а мне нужен IP-адрес.


 
Rouse_ ©   (2006-08-21 14:24) [12]

Calibr, По поводу IP адресов, вникай: http://rouse.front.ru/netifenum.zip


 
Calibr ©   (2006-08-21 14:25) [13]


> Сергей М.


Ну я имею ввиду программно узнать IP-адрес.


 
Сергей М. ©   (2006-08-21 14:26) [14]


> Calibr ©   (21.08.06 14:23) [11]
>
> И что мне дает ipconfig.exe? Консольное окно мелькнуло и
> все, а мне нужен IP-адрес


Стартуешь программно процесс ipconfig.exe с перехватом StdOut и получаешь полный текст того, что было нарисовано в окне консоли с момента запуска ipconfig.exe и по самое его окончание.
Извлечь же из полученного текста интересующую инф-цию - дело проще некуда.


 
Calibr ©   (2006-08-21 14:34) [15]


> Сергей М.


Спасибо!!!


 
Calibr ©   (2006-08-21 14:41) [16]


> Сергей М.


Блин, что то не могу найти такое StdOut. Ты не ошибся с синтаксисом?


 
grisme ©   (2006-08-21 14:44) [17]

Чей ip-то? какого "компьютера"?
локалхост 127.0.0.1


 
Calibr ©   (2006-08-21 14:49) [18]


> grisme

Мне нужен IP-адрес, который отображается в консольном приложении ipconfig.exe только вот не могу оттуда взять информацию не подскажете как?


 
Rouse_ ©   (2006-08-21 14:53) [19]


> Блин, что то не могу найти такое StdOut. Ты не ошибся с
> синтаксисом?

Это делается через GetStdHandle.
Только не парься с этим, выше я тебе привел пример кода (качай пример по ссылке), который получает и выводит эту же информацию.


 
Сергей М. ©   (2006-08-21 14:53) [20]


> Calibr ©   (21.08.06 14:41) [16]


Не там ищешь, наверно.

Читай внимательно описание структуры STARTUPINFO в параметрах ф-ции CreateProcess() - там фигурирует hStdOutput, это хэндл пайпа, создаваемого вызовом CreatePipe()


 
Calibr ©   (2006-08-21 15:09) [21]


> Rouse_


А что прога мне ничто не выводит? Компонент TTreeView пустой.


 
Rouse_ ©   (2006-08-21 15:18) [22]

Значит не видит твоих сетевых интерфейсов, что уже само по себе интересно :)


 
Calibr ©   (2006-08-21 15:22) [23]


> Rouse_

Так что, если комп не врублен в сеть, то и IP-адрес узнать нельзя? Объясни мне тогда, пожалуйста, как изъять информацию из консольного приложения ipconfig.exe? Или приведи пример кода.


 
Rouse_ ©   (2006-08-21 15:26) [24]

запусти консоль (пуск -> выполнить -> CMD) в ней набери
ipconfig /all >c:\ipconfig.txt
покажи что написано в появившемся файле c:\ipconfig.txt


 
SergP.   (2006-08-21 15:29) [25]

> Хорошо, как тогда узнать адрес сетевого интерфейса?


А сетевых интерфейсов у компа может быть много, кроме того их вообще может не быть...


 
Calibr ©   (2006-08-21 15:35) [26]


> Rouse_


Вот содержимое файла ipconfig.txt:

Настройка протокола IP для Windows


 
Rouse_ ©   (2006-08-21 15:53) [27]


> Calibr ©   (21.08.06 15:35) [26]
>
> > Rouse_
>
>
> Вот содержимое файла ipconfig.txt:
>
> Настройка протокола IP для Windows

И это все? Тогда у тебя нет установленных сетевых интерфейсов.


 
n0name   (2006-08-22 14:38) [28]

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


 
Сергей М. ©   (2006-08-22 14:46) [29]


> n0name   (22.08.06 14:38) [28]


Глупости.


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

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


 
Rouse_ ©   (2006-08-22 16:46) [31]

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


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


> Глупости.

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


 
Rouse_ ©   (2006-08-22 18:13) [33]


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

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


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


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

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

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

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


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

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

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

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

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

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


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


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

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


 
Rouse_ ©   (2006-08-23 10:58) [37]


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

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


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

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


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


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

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


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


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

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

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

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


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


> n0name   (23.08.06 12:30) [39]



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


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

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


 
Rouse_ ©   (2006-08-23 13:26) [41]


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

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


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


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

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


 
Rouse_ ©   (2006-08-23 14:19) [43]


> saxon   (23.08.06 14:13) [42]

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


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


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

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


 
Rouse_ ©   (2006-08-24 10:12) [45]


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

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


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


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

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


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


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

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


 
Rouse_ ©   (2006-08-24 12:25) [48]

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

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

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

> А в посте [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;


 
имя   (2006-08-25 13:53) [49]

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



Страницы: 1 2 вся ветка

Текущий архив: 2007.01.28;
Скачать: CL | DM;

Наверх




Память: 0.59 MB
Время: 0.067 c
1-1164903061
CaSH_
2006-11-30 19:11
2007.01.28
TreeView при выделении строки иконка меняется (продолжение 2)


1-1165072361
Керик
2006-12-02 18:12
2007.01.28
Корректно закрыть процесс


5-1147638855
Лев
2006-05-15 00:34
2007.01.28
Нужна компонента типа TMemo но с возможностью простейшего формата


1-1165088447
BOB16
2006-12-02 22:40
2007.01.28
Как убрать мое приложение с панели задач


3-1162814389
Stanislav
2006-11-06 14:59
2007.01.28
Создание запроса