获取IP地址(200分)

  • 主题发起人 主题发起人 zyyzj
  • 开始时间 开始时间
Z

zyyzj

Unregistered / Unconfirmed
GUEST, unregistred user!
当局域网用户通过拨号上网时,
怎样确定程序取得的IP地址是INTEGER而
不是局域网的网卡地址?
 
先取得自己的IP,例如用IPCONFIG命令
然后查一下IP分配表,除了那些保留的IP,其他都是INTERNET的
 
给你一个取得IP地址的函数

//获取本机IP地址
//InternetIP 是否取得InternetIP地址 否则为网卡地址
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;

 
不行啊,无论参数是TRUE 或者 FALSE返回的都是192.168.0.4,我是通过路由上网的[:(!][:(!][:(!][:(!][:(!][:(!][:(!][:(!][:(!][:(!][:(!][:(!][:(!][:(!][:(!]
 
后退
顶部