怎样得到ADSL 上网的动态IP地址(100分)

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

txiuq

Unregistered / Unconfirmed
GUEST, unregistred user!
用程序怎样得到ADSL(PPPoE协议)上网的动态IP地址,我用过RAS的方法不能得到正确的结果,能否有通用的办法获取各种方式(如拨号,宽带ADSL等)后的动态地址?
 
以前有人回答过类似问题
//获取本机IP地址
//InternetIP:=True 上网的地址;
//InternetIP:=False 局域网的地址;
Function GetLocalIp(InternetIP:boolean):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;
IP: String;
begin
Screen.Cursor := crHourGlass;
try
WSAStartup($101, GInitData);
IP:='0.0.0.0';
GetHostName(Buffer, SizeOf(Buffer));
phe := GetHostByName(buffer);
if phe = nil then
begin
ShowMessage(IP);
Result:=IP;
Exit;
end;
pPtr := PaPInAddr(phe^.h_addr_list);
if InternetIP then
begin
I := 0;
while pPtr^ <> nil do
begin
IP := inet_ntoa(pptr^^);
Inc(I);
end;
end
else
IP := inet_ntoa(pptr^[0]^);
WSACleanup;
Result:=IP;//如果上网则为上网ip否则是网卡ip
finally
Screen.Cursor := crDefault;
end;
end;

 
楼上的没问题
 
为什么我得到的地址不正确呢,我跟踪了一下倒数第二个才正确,我的机器共循环了三次。
 
各位,我详细查看了我的电脑,网络适配器里面有一个"Microsoft TV/Video Connection"
我用prosky提供的方法找到三个IP地址,第一个是网卡的IP地址,第二个ADSL是宽带上网
后的动态IP地址,第三个就是"Microsoft TV/Video Connection"的地址“4.0.0.3”,而动态IP地址不是列在最后一个,我是用一个网络工具软件检测确认了的,不知用prosky的方法怎样判断是上网后的动态地址?
 
后退
顶部