Войти

Показать полную графическую версию : Определения IP адреса на Delphi


fossil
05-02-2005, 12:23
Привет! Моя программа должна определять IP адрес, (при обозначении сеть или инет). Ищу более компактный и менее глючный код.

fossil
05-02-2005, 13:34
Точнее для сети определялка у меня есть:

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;


Правда елси кто знает как, я бы хотел его дополнить.. Он определяет только настоящий IP в сети, а если прописаны алиасы то он их не определяет :(
Если кто знает как сделать чтобы он и алиасы выводил допишите плз...

А вообще я ищу чтобы один код мог определять и инетовский (если это указано на CheckBox'e) и сетевой (с алиасами).

Savant
05-02-2005, 13:39
fossil
Могу помочь только тем, что лежит здеся (http://www.sources.ru/cpp/cpp_retrieving_nic_info.shtml), но на Си. Портировать там почти нечего (2 импортируемые функции всего, GetNICCount() и GetNICInfo()), так что думаю будет несложно. Теоретически используются недокументированные функции, т.к. их описания я в API что-то не нашел.

Хотя кое-что полезное можно и тут почерпнуть http://www.sources.ru/delphi/delphi_get_ip_for_all_interfaces.shtml

fossil
05-02-2005, 13:54
Savant
Не особо компактно ;)
А на счет Си, ща гляну..

fossil
05-02-2005, 15:05
Желательно чтобы умельцы помогли подправить мой код до совершенства...

Savant
05-02-2005, 17:20
fossilНе особо компактно
хм... Там просто комментариев полно. Всего 1 кб кода генерируется (и то так много из-за работы со строками, которые Вам не нужны). Только на vcl вполне можно потерять намного больше (250-400 кб "лишнего" кода)




© OSzone.net 2001-2012