المشاركات : 114
المواضيع 35
:
: 0
الإنتساب : Jan 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
شكرا
المشاركات : 3,703
المواضيع 101
:
: 579
الإنتساب : Feb 2008
وعليكم السلام ورحمة الله
ان كنت متصل من جهازك فالكود السابق يظهر الIP صحيح اضافة الى IP كرت الشبكة LAN
ان كان الاتصال بمكان اخر غير جهازك فلا يوجد حل سوى استخدام طرف خارجي مثل موقع whatismyip
المشاركات : 654
المواضيع 34
:
: 106
الإنتساب : Aug 2010
السلام عليكم
نعم كما قال اخي عبد العزيز إن كنت متصل
سيظهر ايبي 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;
المشاركات : 114
المواضيع 35
:
: 0
الإنتساب : Jan 2011
لم تعمل
كود :
http://i891.photobucket.com/albums/ac114/evilkidaz/LAWONLY.jpg
عندما اكتب
كود :
Result := inet_ntoa(pptr^[1]^);
يضهر لي access violation
المشاركات : 3,703
المواضيع 101
:
: 579
الإنتساب : Feb 2008
إقتباس :لم تعمل
لانك غير متصل بالانترنت مباشرة
إقتباس :access violation
طبيعي، تحاول اخذ قيمة شيئ غير موجود
المشاركات : 654
المواضيع 34
:
: 106
الإنتساب : Aug 2010
إدا كنت غير متصل مباشرة
اسجب ايبي من المواقع التي تقدم هده الخدمة
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;
المشاركات : 114
المواضيع 35
:
: 0
الإنتساب : Jan 2011
yassine_hell كتب :السلام عليكم
هل يمكن سحب ip address wan عن طريق delphi بدون اللجوء الى موقع مثل whatismyip ؟؟
طريقة الموقع سهلة ...