我有一段代码,可以取本机的内外网IP(对局域网而言,应放在服务器上):
//uses WinSock
function GetIP(sHostName: String): Tstrings;
type
TaPInAddr = array[0..10] of PInAddr;
PaPInAddr = ^TaPInAddr;
var
phe : PHostEnt;
pptr : PaPInAddr;
Buffer : array[0..MAX_PATH-1] of char;
i : integer;
GInitData : TWSADATA;
begin
WSAStartup($101, GInitData);
Result := TStringList.Create;
Result.Clear;
if sHostName = '' then //若为空值, 则取本机的hostname
begin
GetHostName(Buffer, sizeof(Buffer));
sHostName := String(Buffer);
end;
phe := GetHostByName(PChar(sHostName));
if phe = nil then Exit;
pptr := PaPInAddr(phe^.h_addr_list);
i := 0;
while pptr^ <> nil do
begin
Result.Add(StrPas(inet_ntoa(pptr^^)));
Inc(i);
end;
WSACleanup;
// Result.Free;
end;
不过,如何直接在客户端取服务器的外网地址我还真不知道,要不在服务器放个小的服务器工具?
如果不需要编程,则可直接连到某些可以看到IP的网站就可以看到外网IP了。