//需要加入winsock单元 由IP地址取得域名 function IPAddrToName(IPAddr : String): String; var SockAddrIn: TSockAddrIn; HostEnt: PHostEnt; WSAData: TWSAData; begin WSAStartup($101, WSAData); SockAddrIn.sin_addr.s_addr:= inet_addr(PChar(IPAddr)); HostEnt:= gethostbyaddr(@SockAddrIn.sin_addr.S_addr, 4, AF_INET); if HostEnt<>nil then begin result:=StrPas(Hostent^.h_name) end else begin result:=''; end; end; 由域名取得IP function GetIPFromName(Name: string): string; var WSAData: TWSAData; HostEnt: PHostEnt; begin WSAStartup(2, WSAData); HostEnt := gethostbyname(PChar(Name)); with HostEnt^ do Result := Format('%d.%d.%d.%d', [Byte(h_addr^[0]), Byte(h_addr^[1]), Byte(h_addr^[2]), Byte(h_addr^[3])]); WSACleanup; end;
Delphi Tips How to Get MacAddress of LAN cardunit MACAddress;interfaceuses SysUtils;type TMACAddress = packed array[0..5] of Byte;
ENetBiosError = class(Exception);function LanAdapterCount : Integer;function GetMacAddress(AdapterNum: Integer):TMACAddress; implementationuses NB30, Windows;resourcestring sNetBiosError = 'NetBIOS error %d';type TAStat = record Adapt : TAdapterStatus; NameBuff : array[0..30] of TNameBuffer; end;function LanAdapterCount : Integer; var Ncb : TNCB; uRetCode : Char; lEnum : TLanaEnum; begin FillChar( NCB, SizeOf(NCB), 0 ); with NCB do begin ncb_command := Char( NCBENUM ); ncb_buffer := @lEnum; ncb_length := SizeOf(lEnum); end; uRetCode := Netbios( @Ncb ); if uRetCode <> #0 then raise Exception.CreateFmt( sNetBIOSError, [Ord(uRetCode)]); Result := Ord(lenum.length); end;function GetMacAddress(AdapterNum:Integer):TMACAddress; var Ncb : TNCB; uRetCode : Char; J : Integer; Adapter : TAStat; begin FillChar( NCB, SizeOf(NCB), 0 ); with NCB do begin ncb_command := Char(NCBRESET); ncb_lana_num := Char( AdapterNum ); end; uRetCode := Netbios( @Ncb ); if uRetCode <> #0 then raise Exception.CreateFmt(sNetBIOSError, [Ord(uRetCode)]); FillChar( NCB, SizeOf(NCB), 0 ); with NCB do begin ncb_command := Char(NCBASTAT); ncb_lana_num := Char( AdapterNum ); StrCopy( ncb_callname, '* ' ); ncb_buffer := @Adapter; ncb_length := sizeof(Adapter); end; uRetCode := Netbios( @Ncb ); if uRetCode <> #0 then raise Exception.CreateFmt(sNetBIOSError, [Ord(uRetCode)]); for J := 0 to 5 do Result[J] := Ord( Adapter.Adapt.Adapter_address[J]); end;
由IP地址取得域名
function IPAddrToName(IPAddr : String): String;
var
SockAddrIn: TSockAddrIn;
HostEnt: PHostEnt;
WSAData: TWSAData;
begin
WSAStartup($101, WSAData);
SockAddrIn.sin_addr.s_addr:= inet_addr(PChar(IPAddr));
HostEnt:= gethostbyaddr(@SockAddrIn.sin_addr.S_addr, 4, AF_INET);
if HostEnt<>nil then
begin
result:=StrPas(Hostent^.h_name)
end
else
begin
result:='';
end;
end;
由域名取得IP
function GetIPFromName(Name: string): string;
var
WSAData: TWSAData;
HostEnt: PHostEnt;
begin
WSAStartup(2, WSAData);
HostEnt := gethostbyname(PChar(Name));
with HostEnt^ do
Result := Format('%d.%d.%d.%d', [Byte(h_addr^[0]),
Byte(h_addr^[1]), Byte(h_addr^[2]), Byte(h_addr^[3])]);
WSACleanup;
end;
How to Get MacAddress of LAN cardunit MACAddress;interfaceuses SysUtils;type
TMACAddress = packed array[0..5] of Byte;
ENetBiosError = class(Exception);function LanAdapterCount : Integer;function GetMacAddress(AdapterNum: Integer):TMACAddress;
implementationuses NB30, Windows;resourcestring
sNetBiosError = 'NetBIOS error %d';type
TAStat = record
Adapt : TAdapterStatus;
NameBuff : array[0..30] of TNameBuffer;
end;function LanAdapterCount : Integer;
var
Ncb : TNCB;
uRetCode : Char;
lEnum : TLanaEnum;
begin
FillChar( NCB, SizeOf(NCB), 0 );
with NCB do begin
ncb_command := Char( NCBENUM );
ncb_buffer := @lEnum;
ncb_length := SizeOf(lEnum);
end;
uRetCode := Netbios( @Ncb );
if uRetCode <> #0 then
raise Exception.CreateFmt( sNetBIOSError,
[Ord(uRetCode)]);
Result := Ord(lenum.length);
end;function GetMacAddress(AdapterNum:Integer):TMACAddress;
var
Ncb : TNCB;
uRetCode : Char;
J : Integer;
Adapter : TAStat;
begin
FillChar( NCB, SizeOf(NCB), 0 );
with NCB do begin
ncb_command := Char(NCBRESET);
ncb_lana_num := Char( AdapterNum );
end;
uRetCode := Netbios( @Ncb );
if uRetCode <> #0 then
raise Exception.CreateFmt(sNetBIOSError,
[Ord(uRetCode)]);
FillChar( NCB, SizeOf(NCB), 0 );
with NCB do begin
ncb_command := Char(NCBASTAT);
ncb_lana_num := Char( AdapterNum );
StrCopy( ncb_callname, '* ' );
ncb_buffer := @Adapter;
ncb_length := sizeof(Adapter);
end;
uRetCode := Netbios( @Ncb );
if uRetCode <> #0 then
raise Exception.CreateFmt(sNetBIOSError,
[Ord(uRetCode)]);
for J := 0 to 5 do
Result[J] := Ord( Adapter.Adapt.Adapter_address[J]);
end;