!!!!!!!!!如何获得Internet连接的IP地址? (50分)

H

hryyx

Unregistered / Unconfirmed
GUEST, unregistred user!
如何获得Internet连接的IP地址?
 
进入Dos状态:
IPConfig(自己的)
Ping www.xxxx.com(别人的)
 
这个我当然知道了,我是说使用DELPHI函数,如何获得!
 
可以用delphi调用dos功能阿,
 
uses
...., winsock;

function GetMyInternetIP: string;
type
TaPInAddr = array[0..10] of PInAddr;
PaPInAddr = ^TaPInAddr;
var
phe : PHostEnt;
pptr : PaPInAddr;
s : array[0..128] of char;
I : Integer;
GInitData : TWSADATA;
begin
WSAStartup($101, GInitData);
Result := '';
GetHostName(@s, 128);
phe := GetHostByName(s);
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;
 
楼上的有理,最重要的就是这个API函数:GetHostName
 
我有一个获得本机的IP的函数和小笨苯的雷同。但在使用时特别要注意如果你的计算机同时连接
局域网和Internet那么你得到的就只是局域网的IP,而不是Internet的IP。如果两个网都要用你
必须指定你的IP是局域网的还是Internet的。

function Tform1.GetIPAddress(): string;
var
phoste:pHostEnt;
Buffer:array[0..100] of char;
WSAData:TWSADATA;
begin
result:='';
if WSASTartup($0101, WSAData) <> 0 then exit;
GetHostName(Buffer,Sizeof(Buffer));
phoste:=GetHostByName(buffer);
if phoste = nil then
begin
result:='127.0.0.1';
end
else
result:=StrPas(inet_ntoa(PInAddr(phoste^.h_addr_list^)^));
WSACleanup;
end;
 
小笨苯得到的还是内部IP地址,不是公网地址啊!
 
顶部