如何得到ip地址? ( 积分: 100 )

  • 主题发起人 主题发起人 mafp
  • 开始时间 开始时间
M

mafp

Unregistered / Unconfirmed
GUEST, unregistred user!
如果有两个连接,如何得到ip地址?
 
如果有两个连接,如何得到ip地址?
 
///////////////////////////////////////////////////////////////////////////////
//6.获取计算机名称
///////////////////////////////////////////////////////////////////////////////
function ComputerName:String;
var
ComputerName: PChar;
size: DWord;
begin
GetMem(ComputerName,255) ;
size:=255;
if GetComputerName(ComputerName,size)=true then
begin
result:=ComputerName;
FreeMem(ComputerName) ;
end;
end;
////////////////////////////////////////////////////////////////////////////////
//7.获取计算机IP
////////////////////////////////////////////////////////////////////////////////
function ComputerIP:String;
var phe:pHostEnt;
w:TWSAData;
ip_address:longint;
p:^longint;
ipstr:string;
begin
if WSAStartup(2,w)<>0 then exit;
phe:=gethostbyname(pchar(ComputerName));
if phe<>nil then
begin
p:=pointer(phe^.h_addr_list^);
ip_address:=p^;
ip_address:=ntohl(ip_address);
ipstr:=IntToStr(ip_address shr 24)+'.'+IntToStr((ip_address shr 16) and $ff)
+'.'+IntToStr((ip_address shr 8) and $ff)+'.'+IntToStr(ip_address and $ff);
Result :=ipstr;
end;
end;
 
比如说想得到用adsl拨号上网的公网地址,上面的做法只能得到本机网卡地址,公网的ip如何得到?谢谢!
 
adsl上网可得出公网IP,代理上网就不行了
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;
 
后退
顶部