Показать полную графическую версию : Определения IP адреса на Delphi
Привет! Моя программа должна определять IP адрес, (при обозначении сеть или инет). Ищу более компактный и менее глючный код.
Точнее для сети определялка у меня есть:
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) и сетевой (с алиасами).
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
Savant
Не особо компактно ;)
А на счет Си, ща гляну..
Желательно чтобы умельцы помогли подправить мой код до совершенства...
fossilНе особо компактно
хм... Там просто комментариев полно. Всего 1 кб кода генерируется (и то так много из-за работы со строками, которые Вам не нужны). Только на vcl вполне можно потерять намного больше (250-400 кб "лишнего" кода)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.