请教各位,如何获取 adsl拨号的动态ip地址? (50分)

  • 主题发起人 主题发起人 twlx_0
  • 开始时间 开始时间
T

twlx_0

Unregistered / Unconfirmed
GUEST, unregistred user!
请教各位,如何获取 adsl拨号的动态ip地址?
但是我用adsl拨号上网后 的这个动态ip地址无法获得,请教应该如何做,谢谢。

我用的以下这个自定义的函数可以获得本机的内网的固定ip地址

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^ <> nil do begin
result:=StrPas(inet_ntoa(pptr^^));
Inc(I);
end;
WSACleanup;
end;
 
好像没办法获得
需要从连接的一方才能获得
金蝶搞了一个什么专门作为动态IP的中转
好像就是因为这个原因
 
获取本取所有IP列表,GetIPList('',Memo1.Lines);

uses
WinSock;

procedure GetIPList(HostName: String; IPList: TStrings);
type
TaPInAddr = Array[0..10] of PInAddr;
PaPInAddr = ^TaPInAddr;
var
phe: PHostEnt;
pptr: PaPInAddr;
i: Integer;
GInitData: TWSADATA;
begin
if (not Assigned(IPList)) or (WSAStartup($101,GInitData)<>0) then
Exit;

try
IPList.Clear;
phe:=GetHostByName(PChar(HostName));
if phe=Nil then
Exit;

pptr:=PaPInAddr(Phe^.h_addr_list);
i:=0;
while pptr^<>nil do
begin
IPList.Add(StrPas(inet_ntoa(pptr^^)));
Inc(i);
end;
finally
WSACleanup;
end;
end;
 
pihome,
我试了一下可惜还是不行,
用adsl拨号的那个动态ip地址 跟本机的网卡ip地址是不一样的,
 
在运行里录入:ipconfig 可以得到
 
http://www.eping.net/fourm/dispbbs.asp?boardID=8&ID=586

可以使用RASAPI32.API的这个取得啊

如果是单独的ADSL有公网IP的话,不过局域网内无法

取得网关的动态IP,不过这种可以通过Client发送请求

到Server, 让Server返回IP
 
呵呵,给你一个上次很简单的方法,我也在用!!
function LocalIP : string; //集注把winsock单元加入
var
strBody ,strIP, strAddr: String;
begin
strAddr := 'http://www.e786.com/ip/index.php';
strBody :=mainform.IdHTTP1.Get(strAddr);
strIP:=copy(strAddr,pos('[',strBody )+1, pos(']',strBody )-1);
result:=strIP;
end;

呵呵,包你能用
简单的要死了
 
qingniao,
我试了一下你的这个程序,怎么返回的是个空值
里面应该是还要加上IdHTTP 控件的吧,
是不是 IdHTTP控件属性有什么地方要设置的啊,
 
ePing
如果像你所说的,通过Client发送请求到Server, 让Server返回IP
这样做的话应该怎么实现呢,请教!

 
后退
顶部