delphi4arab منتديات دلفي للعرب
سحب IP address WAN - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : سحب IP address WAN (/showthread.php?tid=3153)



سحب IP address WAN - yassine_hell - 06-06-2011

السلام عليكم
هل يمكن سحب IP Address WAN عن طريق delphi بدون اللجوء الى موقع مثل whatismyip ؟؟
جربت هذا الكود لكن دائما يضهر لي IP LAN

كود :
function TForm1.ReadIPs: TStrings; type TaPInAddr = array[0..10] of PInAddr; PaPInAddr = ^TaPInAddr; var Buffer: array[0..63] of AnsiChar; iI: Integer; PPtr: PaPInAddr; pHE: PHostEnt; GInitData: TWSAData; begin WSAStartup($101, GInitData); Result := TStringList.Create; Result.Clear; GetHostName(Buffer, SizeOf(Buffer)); pHE := GetHostByName(buffer); if pHE = nil then Exit; PPtr := PaPInAddr(pHE^.H_Addr_List); iI := 0; while pPtr^[iI] <> nil do begin Result.Add(Inet_NToA(PPtr^[iI]^)); Inc(iI); end; WSACleanup; end;



اضن لانني خلف Router
شكرا


سحب IP address WAN - محمد عبد العزيز - 06-06-2011


وعليكم السلام ورحمة الله

ان كنت متصل من جهازك فالكود السابق يظهر الIP صحيح اضافة الى IP كرت الشبكة LAN
ان كان الاتصال بمكان اخر غير جهازك فلا يوجد حل سوى استخدام طرف خارجي مثل موقع whatismyip



سحب IP address WAN - Agmcz - 06-06-2011

السلام عليكم
نعم كما قال اخي عبد العزيز إن كنت متصل
سيظهر ايبي lan + wan
أما إن كنت غير متصل فيظهر lan فقط
===================
Lan
PHP كود :
function GetIPLan: string;
type
  TaPInAddr 
= array[0..10] of PInAddr;
  
PaPInAddr = ^TaPInAddr;
var
  
phe: PHostEnt;
  
pptr: PaPInAddr;
  
Buffer: array[0..63] of Char;
  
GInitData: TWSAData;
begin
  WSAStartup
($101, GInitData);
  
GetHostName(Buffer, SizeOf(Buffer));
  
phe := GetHostByName(buffer);
  if 
phe = nil then Exit;
  
pPtr := PaPInAddr(phe^.h_addr_list);
  
begin
    Result 
:= inet_ntoa(pptr^[0]^);
  
end;
  
WSACleanup;
end; 
Wan
PHP كود :
function GetIPWan: string;
type
  TaPInAddr 
= array[0..10] of PInAddr;
  
PaPInAddr = ^TaPInAddr;
var
  
phe: PHostEnt;
  
pptr: PaPInAddr;
  
Buffer: array[0..63] of Char;
  
GInitData: TWSAData;
begin
  WSAStartup
($101, GInitData);
  
GetHostName(Buffer, SizeOf(Buffer));
  
phe := GetHostByName(buffer);
  if 
phe = nil then Exit;
  
pPtr := PaPInAddr(phe^.h_addr_list);
  
begin
    Result 
:= inet_ntoa(pptr^[1]^);
  
end;
  
WSACleanup;
end; 
Lan +Wan
PHP كود :
function GetIPs: Tstrings;
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 := TstringList.Create;
  
Result.Clear;
  
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
.Add(inet_ntoa(pptr^[i]^));
    
Inc(I);
  
end;
  
WSACleanup;
end; 



سحب IP address WAN - yassine_hell - 06-06-2011

لم تعمل
كود :
http://i891.photobucket.com/albums/ac114/evilkidaz/LAWONLY.jpg
عندما اكتب
كود :
Result := inet_ntoa(pptr^[1]^);

يضهر لي access violation


سحب IP address WAN - محمد عبد العزيز - 06-06-2011


إقتباس :لم تعمل
لانك غير متصل بالانترنت مباشرة
إقتباس :access violation
طبيعي، تحاول اخذ قيمة شيئ غير موجود



سحب IP address WAN - Agmcz - 06-06-2011

إدا كنت غير متصل مباشرة
اسجب ايبي من المواقع التي تقدم هده الخدمة
PHP كود :
function GetIP(): string;
var
 
i: Integer;
 
X, S: AnsiString;
 
HTTP: TIdHTTP;
begin
 HTTP 
:= TIdHTTP.Create(nil);
 try
 
X := HTTP.Get('http://checkip.dyndns.com');
 
i := AnsiPos('Address:',X);
 
i := i+9;
 while 
x[i] <> '<' do begin
 S 
:= S+x[i];
 
inc(i);
 
end;
 
Result := S;
 finally
 
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1
.Text := GetIP;
end; 



سحب IP address WAN - yassine_hell - 06-06-2011

yassine_hell كتب :السلام عليكم
هل يمكن سحب ip address wan عن طريق delphi بدون اللجوء الى موقع مثل whatismyip ؟؟


طريقة الموقع سهلة ...