我的机器有多个网卡,同时也有多个IP,请问如何取得这多个IP!

解决方案 »

  1.   

    在命令提示符里面,ipconfig -all就可以看到全部的ip信息了
      

  2.   


    int Size = 20;
    char MyHost[20];
    GetComputerName (MyHost, &Size);
    取IP:
    int i;
    TStringList *MyIP = new TStringList;
    AnsiString IP1;
    hostent *Host1;
    unsigned char add;
    char HostName[20];
    gethostname (HostName, 20);
    Host1 = gethostbyname(HostName);
    i = 0;
    MyIP->Clear ();
    while (Host1->h_addr_list[i] != NULL)
    {
    add = Host1->h_addr_list[i][0];
    IP1 = IP1 + IntToStr(add) + ".";
    add = Host1->h_addr_list[i][1];
    IP1 = IP1 + IntToStr(add) + ".";
    add = Host1->h_addr_list[i][2];
    IP1 = IP1 + IntToStr(add) + ".";
    add = Host1->h_addr_list[i][3];
    IP1 = IP1 + IntToStr(add);
    MyIP->Add (IP1);
    IP1 = "";
    i++;
    }
      

  3.   

    上面那个函数本是用来得到本机IP的,
    但我发现也可以同时得到多个IP(如果你有多个IP)。你试试。
      

  4.   

    不好意思,我给的是C写的~忘记这里是Delphi啦~
    找了一个Delphi写的
     
      
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      Winsock, StdCtrls, ExtCtrls, Menus ,clipbrd;type
      TForm1 = class(TForm)
        Timer1: TTimer;
        PopupMenu1: TPopupMenu;
        Exit1: TMenuItem;
        Label1: TLabel;
        Copy1: TMenuItem;
        procedure FormCreate(Sender: TObject);
        procedure Timer1Timer(Sender: TObject);
        procedure Exit1Click(Sender: TObject);
       procedure formmousedown(sender: tobject; button: tmousebutton;
                                        shift: tshiftstate; x, y: integer);
        procedure Edit1StartDrag(Sender: TObject; var DragObject: TDragObject);
        procedure Copy1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.DFM}// returns ISP assigned IP
    function HostName : string;
    var
        Buffer : array [0..63] of char;
        GInitData      : TWSADATA;
    begin
        WSAStartup($101, GInitData);
        Result := '';
        GetHostName(Buffer, SizeOf(Buffer));
        Result := StrPas(Buffer);
        WSACleanup;
    end;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:=StrPas(inet_ntoa(pptr^[I]^));
          Inc(I);
        end;
        WSACleanup;
    end;{subject : moving forms (and other twincontrols) without using the caption-bar}procedure tForm1.formmousedown(sender: tobject; button: tmousebutton;
                                        shift: tshiftstate; x, y: integer);
    const
      sc_dragmove = $f012;
    begin
      releasecapture;
      twincontrol(application.mainform).perform(wm_syscommand,sc_dragmove, 0);
    end;procedure TForm1.FormCreate(Sender: TObject);
    var
      FullRgn, ClientRgn, ButtonRgn: THandle;
      Margin, X, Y: Integer;
    begin
      top:=screen.Height-50;
      left:=screen.width-120;
      height:=Label1.Height;
      width:=Label1.width;
      Margin := (Width - ClientWidth) div 2;
      FullRgn := CreateRectRgn(0, 0, Width, Height);
      X := Margin;
      Y := Height - ClientHeight - Margin;
      ClientRgn := CreateRectRgn(X, Y, X + ClientWidth, Y + ClientHeight);
      CombineRgn(FullRgn, FullRgn, ClientRgn, RGN_DIFF);
      X := X + Label1.Left;
      Y := Y + Label1.Top;
      ButtonRgn := CreateRectRgn(X, Y, X + Label1.Width, Y + Label1.Height);
      CombineRgn(FullRgn, FullRgn, ButtonRgn, RGN_OR);
      SetWindowRgn(Handle, FullRgn, True);
      //Hide Taskbar Icon
      ShowWindow( Application.Handle, SW_HIDE );
      SetWindowLong( Application.Handle, GWL_EXSTYLE,
                     GetWindowLong(Application.Handle, GWL_EXSTYLE) or
                     WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW);
      ShowWindow( Application.Handle, SW_SHOW );
    end;procedure TForm1.Timer1Timer(Sender: TObject);
    begin
      Timer1.interval:=1000*100;
      Label1.Caption:='IP: '+LocalIP + #13#10
            + 'HostName: '+HostName;
    end;procedure TForm1.Exit1Click(Sender: TObject);
    begin
      application.terminate;
    end;procedure TForm1.Edit1StartDrag(Sender: TObject;
      var DragObject: TDragObject);
    const
      sc_dragmove = $f012;
    begin
      releasecapture;
      twincontrol(application.mainform).perform(wm_syscommand,sc_dragmove, 0);end;procedure TForm1.Copy1Click(Sender: TObject);
    begin
      Clipboard.SetTextBuf(Pchar(copy(Label1.caption,0,255)));
    end;end.
      

  5.   

    以下程序是用C++BUIDER写的,
           ListBox1->Items->Clear ();         IP_ADAPTER_INFO AdapterInfoArray[8];         ULONG ulSize = sizeof(IP_ADAPTER_INFO)*8;         GetAdaptersInfo(AdapterInfoArray, &ulSize);         IP_ADAPTER_INFO* pAdapter = AdapterInfoArray;         while(pAdapter)
             {
                      IP_ADDR_STRING* pIPAddrString = &(pAdapter->IpAddressList);
                        while(pIPAddrString)                   {        
                                AnsiString strTemp;                            ListBox1->Items->Add (pIPAddrString->IpAddress.String);                            pIPAddrString = pIPAddrString->Next;                   }                   pAdapter = pAdapter->Next;         }