我现在有个局域网,通过共享Internet上网的,但是我又如何取得Internet对外的IP呢?(不管是在服务器上还是客端机上都要能实现),请各位高手,帮忙解决一下,希望能提供源码,兄弟实在很急,谢谢!!!

解决方案 »

  1.   

    实际上你通过局域网上网后,真正的IP还是你们的服务器在网上的,然后每台客户机上的,只是在服务器那边和某个端口进行了某种关联,这样是不是简单点了.
    uses winsock;var
      strIP:string;
    begin
      if GetLocalIP(strIP) then
      Caption:=strip;
    end;
    function GetLocalIP(var LocalIp: string): Boolean;
    var
        HostEnt: PHostEnt;
        Ip: string;
        addr: pchar;
        Buffer: array [0..63] of char;
        GInitData: TWSADATA;
    begin
      Result := False;
      try
        WSAStartup(2, GInitData);
        GetHostName(Buffer, SizeOf(Buffer));
        HostEnt := GetHostByName(buffer);
        if HostEnt = nil then Exit;
        addr := HostEnt^.h_addr_list^;
        ip := Format('%d.%d.%d.%d', [byte(addr [0]),
              byte (addr [1]), byte (addr [2]), byte (addr [3])]);
        LocalIp := Ip;
        Result := True;
      finally
        WSACleanup;
      end;
    end;
      

  2.   

    至少要有一个外网服务器,在那里写个程序,然后你的客户端访问外网服务器程序,由那个程序返回(最简单的就是写一个ASP页面)