delphi4arab منتديات دلفي للعرب
GetIPs V0.1 بريمج صغير لجلب ال IP - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي الأخرى (https://delphi4arab.net/forum/forumdisplay.php?fid=4)
+--- قسم : برامج دلفي من عمل الأعضاء (https://delphi4arab.net/forum/forumdisplay.php?fid=27)
+--- الموضوع : GetIPs V0.1 بريمج صغير لجلب ال IP (/showthread.php?tid=10727)



GetIPs V0.1 بريمج صغير لجلب ال IP - Rever7eR - 30-03-2020

السلام عليكم و رحمة الله و بركاته 
اتمنى ان يكون الجميع بخير 
اول مشاركة نافعة لي في المنتدى , منذ سجلت و أنا أسأل  Big Grin
قمت بعمل بريمج صغير يقوم ب
[+] جلب Local IP address  
[+] جلب ال  Public IP Address  
سأقوم ان شاء الله بعمل دورية كل مدة لإضافة خاصية معينة و اصلاح السورس 
لكل شخص يريد تطويره يتفضل مشكور
الهدف منه : تحسين مهارات التعامل مع الشبكة و مكوناتها بشكل عام
ملاحظات بسيطة : 
شاهدت موضوع للأخ Delphi4US جزاه الله خير وضع بريمج مفتوح المصدر مطابق لما قمت به 

كود :
https://delphi4arab.net/forum/showthread.php?tid=10414
بعد الاطلاع على السورس وجدت انه
[-] طويل دون فائدة
[-] البرنامج لا يوجد به معالجة للاخطاء (Error Handling)
[-] البرنامج يفشل في تحديد الLocal IP Address في حالة وجود أكثر من Network Adapter مثلا انا لدي 
VMware ipv4 = 192.168.219.1 و ال Wifi adapter ipv4 = 192.168.1.3 كما توضح الصورة
 
[صورة: aYVvwwT.png]
نفس الملاحظة بالنسبة لمكون tcpclient يرجع الاي بي 192.168.219.1
ارحب بكل الاقتراحات و التعديلات و الانتقادات
السورس في المرفقات


RE: GetIPs V0.1 بريمج صغير لجلب ال IP - AX302 - 30-03-2020

السلام عليكم 
يمكنك استعمال Indy ايضا للحصول على الايبي الداخلي


RE: GetIPs V0.1 بريمج صغير لجلب ال IP - Rever7eR - 31-03-2020

(30-03-2020, 11:18 PM)AX302 كتب : السلام عليكم 
يمكنك استعمال Indy ايضا للحصول على الايبي الداخلي
مرحبا AX302 سعيد بمشاركتك 
نفس الملاحظة بالنسبة لمكون الاندي , لا يعمل جيدا اذا كان جهازك يحتوي على كروت انترنت افتراضية مثل VMware ... 
اظن الحل هو الحفاظ على استعمال الوحدة winsock و الله اعلم .
[+] اعجبتني فكرة تقسيم المشروع الى وحدات
تحياتي


RE: GetIPs V0.1 بريمج صغير لجلب ال IP - seddik_xp - 09-04-2020

الحل السريع للحصول على عنوان IP و بدون أي مشاكل في إستعمال خدمة Opendns server كخادم dns ليجيبك عند إستعلامك عن عنوان 'myip.opendns.com' بعنوان IP الخاص بك.

كود :
program MyIPAdress; {$APPTYPE CONSOLE} uses   SysUtils, IdDNSResolver ; var dns :TIdDNSResolver ; begin   dns := TIdDNSResolver.Create ;   dns.QueryType:= [qtA];   dns.Host := '208.67.222.222' ;   try   dns.Resolve('myip.opendns.com');   Writeln('IP Adress :' + TARecord(dns.QueryResult[0]).IPAddress);   except     on E: Exception do       Writeln(E.ClassName, ': ', E.Message);   end;   Readln; end.


.zip   MyIPAdress.zip (الحجم : 247.21 ك ب / التحميلات : 30)


RE: GetIPs V0.1 بريمج صغير لجلب ال IP - FiREWORKS - 16-04-2020

إقتباس :[-] البرنامج يفشل في تحديد الLocal IP Address في حالة وجود أكثر من Network Adapter




الأوامر التي استعملتها في تطبيقك و ضعتها بطريقة خاطئة:

هنا الدالة ترجع نوع string

كود :
Function GetLocalIP : String;
بمعنى انه بعد المعالجة سوف يتم ارجاع قيمة نصية واحدة.



في اوامر مثالك، هنا حلقة تقوم بحفظ ما تم جلبه في result، الحلقة تدور بعدد ما تم تحديده من Network Adapters النشطة (Enabled). و الحفظ يوضع في نفس الــ string في كل مرة (هنا الخطأ).

كود :
      while IPlist[i] <> nil do         begin          result := inet_ntoa(IPList^[i]^);          Inc(i);         end;
مما سوف يؤدي الى استبدال في الذاكرة المحجوزة ما تم حفظه اول مرة بالقيمة التالية و هكذا... الى انتهاء دوران الحلقة و تحصل فقط على آخر قيمة تم حفظها...

احد الحلول المتوفرة، تعديل الأوامر الى:
result يجب ان يكون نوع نصي يمكنه احتواء قائمة نصية ثم اظهار محتواها في مكون يدعم القوائم و ليس مكون من نوع TEdit


RE: GetIPs V0.1 بريمج صغير لجلب ال IP - ALG2009 - 16-04-2020

وعليكم السلام
ممكن أن تضيف خصية اظهار الـ 'IP' الخارجي المتصل  بالكميوتر لكشف  الـ 'IP'  المشبوهة