获取外网IP的函数
function GetIP: string;
var
r: string;
p1, p2: Integer;
begin
r := idhttp1.get('http://www.net.cn/static/customercare/yourIP.asp');
p1 := Pos('<h2>', r); // 找到 h2 标签
p2 := Pos('</h2>', r); // 找到 h2 结束标签
Result := Copy(r, p1 + 4, p2 - p1 - 4);
end;
/获取内网IP
function GetLocalIP: 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^[I] <> nil do begin
Result := StrPas(inet_ntoa(pptr^[I]^));
Inc(I);
end;
WSACleanup;
end;
function GetIP: string;
var
r: string;
p1, p2: Integer;
begin
r := idhttp1.get('http://www.net.cn/static/customercare/yourIP.asp');
p1 := Pos('<h2>', r); // 找到 h2 标签
p2 := Pos('</h2>', r); // 找到 h2 结束标签
Result := Copy(r, p1 + 4, p2 - p1 - 4);
end;
/获取内网IP
function GetLocalIP: 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^[I] <> nil do begin
Result := StrPas(inet_ntoa(pptr^[I]^));
Inc(I);
end;
WSACleanup;
end;
Indy9里面的HTTP组件
- uses IdHTTP;
- function GetPublicIP: string;
- var
- strIP, URL: string;
- iStart, iEnd: Integer;
- MyIdHTTP: TIdHTTP;
- begin
- Result := '';
- MyIdHTTP := TIdHTTP.Create(nil);
- try
- try
- URL := MyIdHTTP.Get('http://www.ip138.com/ip2city.asp');
- except
- end;
- finally
- MyIdHTTP.Free;
- end;
- if Length(URL) <> 0 then
- begin
- iStart := Pos('[', URL);
- iEnd := Pos(']', URL);
- if (iStart <> 0) and (iEnd <> 0) then
- begin
- strIP := Trim(Copy(URL, iStart + 1, iEnd - iStart - 1));
- if strIP <> '' then
- Result := strIP;
- end;
- end;
- end;
这个函数不错
function TGetIp.GetIp: string;
var
xml : OleVariant;
HtmlStr:string;
p1,p2 : Integer;
begin
Result :='' ;
try
xml := CreateOleObject('Microsoft.XMLHTTP');
xml.Open('GET','http://www.net.cn/static/customercare/yourIP.asp', False);
xml.Send;
HtmlStr := xml.responseText;
p1:=Pos('<h2>',HtmlStr); // 找到 h2 标签
p2:=Pos('</h2>',HtmlStr); // 找到 h2 结束标签
Result := Copy(HtmlStr, p1+4, p2-p1-4);
except
end;
end;
var
xml : OleVariant;
HtmlStr:string;
p1,p2 : Integer;
begin
Result :='' ;
try
xml := CreateOleObject('Microsoft.XMLHTTP');
xml.Open('GET','http://www.net.cn/static/customercare/yourIP.asp', False);
xml.Send;
HtmlStr := xml.responseText;
p1:=Pos('<h2>',HtmlStr); // 找到 h2 标签
p2:=Pos('</h2>',HtmlStr); // 找到 h2 结束标签
Result := Copy(HtmlStr, p1+4, p2-p1-4);
except
end;
end;