delphi4arab منتديات دلفي للعرب

نسخة كاملة : تحديد Ip الخاصة بالاتصال الانترنت, ليس IP الشبكة المحلبة
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2
السلام عليكم و رحمة الله و بركاته
إذا دحلت على الموقع التالى myip فإنه يعطيك IP الذى تشغله في سبكة الإنترنت (و ليس في الشيكة المحلية)
سؤالي هو هل يمكن أن نقوم بهذا العمل بواسطة برنامج Delphi ؟


و الجواب بسط جدا :

كلنا يعرف الموقع http://www.whatismyip.org/ فإنه يعطيك رقم IP الخاص بالإنترنت .
و في المرفقات مثال لاسترجاع رقم IP من هذا الموقع .
:monster1:
[COLOR="black"]عمل جميل، بارك الله فيك.
هذه الطريقة تقوم بقراءة عنوان IP المكتوب في صفحة الموقع.
فلا يمكن الوثوق في هذه الطريقة بشكل كامل، فقد يتغير محتوى الموقع أو عنوانه في أي لحظة.
يمكن بنفس الطريقة الحصول على IP ومعلومات حول نوع خط الاتصال واسم الموزع واسم البلد من خلال قراءة محتوى الموقع:
كود :
http://www.ip-adress.com/
بالتوفيق.[/COLOR]
يمكن عمل ذلك مبدئيا بما في المرفقات:
شكرا ، جميل جدا ،بارك الله فيك أخي Unprogramme لكن لست أدري لما لا يعمل إلا من المسار :
إقتباس :C:\Documents and Settings\Moi\Mes documents\Ramdhane\IP1

يعطي رسالة الخطأ:
إقتباس : E[Erreur fatale] Impossible de créer le fichier de sortie
'C:\Documents and Settings\Moi\Mes documents\Ramdhane\IP1\Ip.exe
مشكور أخي Kachwahad على التعديل و الإضافة الجميلة .
يمكن كتابة الكود بشكل أفضل:
PHP كود :
function GetBetween(StrFirstDemarcSecondDemarcString): String;
begin
Result 
:= Trim(Copy(Str,
                
Pos(FirstDemarc,Str)+length(FirstDemarc),
                
Pos(SecondDemarcStr)-Pos(FirstDemarc,Str)-length(FirstDemarc)));
end;

procedure TForm1.Button1Click(SenderTObject);
Function 
Ip_Internet String;
  Var 
Acces_Web TIdHttp;
Begin

  Acces_Web 
:= TIdHttp.Create(Nil);
  Try
    try
  
//or 'http://www.whatismyip.org' to get just IP net.
    
Result := Acces_Web.Get('http://www.ip-adress.com/');
    
except
      MessageBox
(Handle'Connection faild!','Error',MB_OK+MB_ICONERROR);
      
end;
  Finally
    
Acces_Web.Free;
  
End;
End;
begin
    Label1
.Caption := GetBetween(Ip_Internet'ss: ''</h2>');
    
Label3.Caption := GetBetween(Ip_Internet'g">''<br>');
    
Label2.Caption := GetBetween(Ip_Internet'IP: ''"content2');
    
Label2.Caption := Copy(Label2.Caption,0,length(Label2.Caption)-51);
end
كما يمكن استخراج صورة علم البلد والخريطة وغير ذلك، أو استخدام مواقع أخرى تقدم معلومات أكثر مثل:
كود :
http://whatismyipaddress.com/

عمل رائع أخي Kachwahad الله يجزل لك المثوبة و الأجر ، وفقت لكل خير.
جميل جدا Kachwahad بارك الله فيك .
السؤال المطروح : هل من معلومات أكثر إفادة في تحديد الموقع الدقيق لصاحب الإيبي
أقصد أن مثلا العلم لا يهم في شيء مادام اسم البلد متوفر .
السلام عليكم
اضافة هذا الكود 100% دلفي و اصغر
PHP كود :
function GetIPAddressstring;
var
  
phoste:PHostEnt;
  
Buffer:array[0..100of char;
  
WSAData:TWSADATA;
begin
  result
:='';
  if 
WSASTartup($0101WSAData) <> 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

و الذي قمت به ايضا يعمل و بارك الله فيك على المعلومة Big Grin
و 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
    begin
       Exit;
    end;
    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;
إقتباس :و IP الخاصة بالشبكة الصغيرة
شكرا أخي heros
يجب تعريف Winsock في مثالك:
PHP كود :
uses
  Winsock

عندما يوضع أي كود/مثال يجب تجربته أولا.
تحياتي، بالتوفيق.
الصفحات : 1 2