매가패스 오피스넷을 쓰고 있구요,
명령프롬프트에서 ipconfig를 치면 ip가 두 개 나옵니다.
하나는 ADSL 유동 ip이구요,
하나는 내부 ip 입니다.
<팁>강좌에서 찾은 소스는 아래와 같은데요,
내부 IP는 가져오지 못합니다.
어떻게 하면 내부 ip를 가져올 수가 있을까요?
고수님들의 조언 부탁드립니다~~^^
function TForm1.HostToIP(Name: string; var Ip: string): Boolean;
var
wsdata : TWSAData;
hostName : array [0..255] of char;
hostEnt : PHostEnt;
addr : PChar;
begin
WSAStartup ($0101, wsdata);
try
gethostname (hostName, sizeof (hostName));
StrPCopy(hostName, Name);
hostEnt := GetHostByName (hostName);
if Assigned (hostEnt) then
if Assigned (hostEnt^.h_addr_list) then begin
addr := hostEnt^.h_addr_list^;
if Assigned (addr) then begin
IP := Format ('%d.%d.%d.%d', [byte (addr [0]),
byte (addr [1]), byte (addr [2]), byte (addr [3])]);
Result := True;
end
else
Result := False;
end
else
Result := False
else begin
Result := False;
end;
finally
WSACleanup;
end
end;
아이피가 둘다 나오네요..
procedure GetLocalIpList(aList : TStringList);
type
TaPInAddr = array [0..255] of PInAddr;
PaPInAddr = ^TaPInAddr;
var
buff : array [0..63] of char;
pHEnt : PHostEnt;
pptr : PaPInAddr;
WSData : TWSAData;
i : integer;
begin
aList.Clear;
if WSAStartup($202,WSData) <> 0 then begin
showmessagefmt('%d',[getlasterror]);
exit;
end;
try
if GetHostName (buff,sizeof(buff)) <> 0 then begin
showmessagefmt('%d',[getlasterror]);
exit;
end;
pHEnt := gethostbyname(buff);
if pHEnt <> nil then begin
pptr := PaPInAddr(pHEnt^.h_addr_list);
I := 0;
while pptr^[I] <> nil do begin
aList.Add(StrPas(inet_ntoa(pptr^[I]^)));
Inc(I);
end;
end;
finally
WSACleanup;
end;
end;