那样的话楼主欠的就是IP解析了,请看下面的函数: ◇[DELPHI]实现IP到域名的转换 function GetDomainName(Ip:string):string; var pH:PHostent; data:twsadata; ii:dword; begin WSAStartup($101, Data); ii:=inet_addr(pchar(ip)); pH:=gethostbyaddr(@ii,sizeof(ii),PF_INET); if (ph<>nil) then result:=pH.h_name else result:=''; WSACleanup; end;
将某一主机域名解析为IP地址。
使用 WinSock 单元;过程如下:function HostToIP(Name: string; var Ip: string): Boolean;varwsdata : TWSAData;hostName : array [0..255] of char;hostEnt : PHostEnt;addr : PChar;beginWSAStartup ($0101, wsdata);trygethostname (hostName, sizeof (hostName));StrPCopy(hostName, Name);hostEnt := gethostbyname (hostName);if Assigned (hostEnt) thenif Assigned (hostEnt^.h_addr_list) then beginaddr := hostEnt^.h_addr_list^;if Assigned (addr) then beginIP := Format ('%d.%d.%d.%d', [byte (addr [0]),byte (addr [1]), byte (addr [2]), byte (addr [3])]);Result := True;endelseResult := False;endelseResult := Falseelse beginResult := False;end;finallyWSACleanup;endend;
procedure NBGetMac(Strings: TStrings);
var
NCB: TNCB;
Adapter: TAdapterStatus;
LanaEnum: TLanaEnum;
I, J: Integer;
Str: string;
begin
Strings.Clear;
ZeroMemory(@NCB, SizeOf(NCB));
NCB.ncb_command := Chr(NCBENUM);
NCB.ncb_buffer := @LanaEnum;
NCB.ncb_length := SizeOf(LanaEnum);
NCB.ncb_command := Chr(NCBENUM);
NetBios(@NCB);
for I := 0 to Ord(LanaEnum.length) - 1 do
begin
ZeroMemory(@NCB, SizeOf(NCB));
NCB.ncb_command := Chr(NCBRESET);
NCB.ncb_lana_num := LanaEnum.lana[I];
NetBios(@NCB);
ZeroMemory(@NCB, SizeOf(NCB));
NCB.ncb_command := Chr(NCBASTAT);
NCB.ncb_lana_num := LanaEnum.lana[I];
StrPCopy(NCB.ncb_callname, '*');
NCB.ncb_buffer := @Adapter;
NCB.ncb_length := SizeOf(Adapter);
NetBios(@NCB);
Str := '';
for J := 0 to 5 do
begin
// if J > 0 then
// Str := Str;// + '-';
Str := Str + HexBL(Byte(Adapter.adapter_address[J]));
end;
Strings.Add(Str);
end;
end;
◇[DELPHI]实现IP到域名的转换
function GetDomainName(Ip:string):string;
var
pH:PHostent;
data:twsadata;
ii:dword;
begin
WSAStartup($101, Data);
ii:=inet_addr(pchar(ip));
pH:=gethostbyaddr(@ii,sizeof(ii),PF_INET);
if (ph<>nil) then
result:=pH.h_name
else
result:='';
WSACleanup;
end;