Форум: "Сети";
Текущий архив: 2007.01.28;
Скачать: [xml.tar.bz2];
ВнизКак узнать 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 суффикс этого подключения . . :
Описание . . . . . . . . . . . . : └фряЄхЁ 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;
Скачать: [xml.tar.bz2];
Память: 0.58 MB
Время: 0.046 c