下面程序里面有你要的转换函数//////////////////////////////////////////////
取得本机ip和机器名
//////////////////////////////////////////////uses winsock; function LocalIP: String; 
type 
  TaPInAddr = Array[0..10] of PInAddr; 
  PaPInAddr = ^TaPInAddr; 
var 
  phe: PHostEnt; 
  pptr: PaPInAddr; 
  Buffer: Array[0..63] of Char; 
  I: Integer; 
  GInitData: TWSAData; 
begin 
  WSAStartup($101, GInitData); 
  Result := ''; 
  GetHostName(Buffer, SizeOf(Buffer)); 
  phe := GetHostByName(buffer); 
  if phe = nil then Exit; 
  pPtr := PaPInAddr(phe^.h_addr_list); 
  I := 0; 
  while pPtr^[I] <> nil do 
  begin 
    Result := inet_ntoa(pptr^[I]^); 
    Inc(I); 
  end; 
  WSACleanup; 
end; 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; procedure TForm1.Button1Click(Sender: TObject); 
begin 
  ShowMessage(IPAddrToName(LocalIp)); 
end; 

解决方案 »

  1.   

    c:\nbtstat -a IPADRESS
    c:\nbtstat -c
      

  2.   

    10分的确少,如果你能够给出完整正确的答复,我可以再加20~30分to kevin_gao:
    你给出的是取本机IP和名称的代码,这个我会。
      

  3.   

    //我已经搞定了,不用给分了,呵呵
    Function GetNameByIP(MIP:string; var Name:string):boolean; 
    var 
      PHt:PHostEnt; 
      WSData: TWSAData; 
      i:Word; 
      j:integer; 
      k:u_long; 
    begin 
      result:=false; 
      i:=MAKEWORD(1,1); 
      if WSAStartup(i,WSData)<>0 then exit; 
      k:=inet_addr(PChar(MIP)); 
      PHt:=gethostbyaddr(@k,4,PF_INET); 
      if PHt=nil then begin 
        j:=WSAGetLastError; 
        Name:='Error:'+inttostr(j-WSABASEERR); 
      end else begin 
        Name:=PHt.h_name; 
        result:=true; 
      end; 
      WSACleanup; 
    end; 
      

  4.   

    仔细一看,kevin_gao的第二个寒暑就是我的问题要的,要给分!谢谢。