Delphi 如何获取本地计算机名和IP地址

typedef struct WSAData{  
WORD wVersion;  
WORD wHighVersion;  
char szDescription[WSADESCRIPTION_LEN+1];  
char szSystemStatus[WSASYS_STATUS_LEN+1];  
unsigned short iMaxSockets;  
unsigned short iMaxUdpDg;  
char FAR * lpVendorInfo;  
 }WSADATA,FAR * LPWSADATA;
--------------------------------------------------------------------------------------
获取计算机名函数:

uses Windows;

function GetHostName:String;
var
  ComputerName: array[0..MAX_COMPUTERNAME_LENGTH+1] of char;
  Size: Cardinal;
begin
  result:='';
  Size := MAX_COMPUTERNAME_LENGTH+1;
  GetComputerName(ComputerName, Size);
  Result:=StrPas(ComputerName);
end;
--------------------------------------------------------------------------------------

获取计算机IP函数:

function HostNameToIP(HostName:string):String;
var
  WSAData: TWSAData;
  HostEnt: PHostEnt;
begin
  result:='';
  WSAStartup(2, WSAData);
  HostEnt := GetHostByName(PChar(HostName));
  if HostEnt <> nil then
  begin
    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])]);
  end;
  WSACleanup;
end;
--------------------------------------------------------------------------------------

delphi 获取本机IP地址代码:
uses WinSock;
procedure TForm1.Button2Click(Sender: TObject);
var
   aName: array[0..100] of char;
   WSData: Twsadata;
   a1, a2, a3, a4: byte;
   p: PHostEnt;
   Comput,
   ip: String;
begin
  WSAStartup(1,WSData);
  try
     GetHostName(aName,   100);
     p:=GetHostByName(aName);
     Char(a1):=p.h_addr_List^[0];
     Char(a2):=p.h_addr_List^[1];
     Char(a3):=p.h_addr_List^[2];
     Char(a4):=p.h_addr_List^[3];
  finally
     WSACleanup;
  end;
  Comput:=string(aName);  {计算机名}
  IP:=IntToStr(a1)+'.'+IntToStr(a2)+'.'+IntToStr(a3)+'.'+IntToStr(a4);
  Label1.Caption := ip;
end;

posted @ 2011-12-04 22:23  散装先生  阅读(78)  评论(0)    收藏  举报