用什么函數可以得到電腦的網卡編號和ip地址﹐我好著急﹗

解决方案 »

  1.   

    //需要加入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;
      

  2.   

    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;