الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كلاس للحصول على اسم الدولة من خلال عنوان الجهاز

بدأه Wajdy Essam في 11 يونيو 2010 · 20 رد · 1,903 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

عند حصولك على IP شخص ما سواء من خلال تسجيل logging هذا العنوان القادم للسيرفر أو حتى عند قرائتك للSMTP Header من صندوق بريدك حتى تحصل على عنوان مرسل الرسالة الحقيقي أو غيرها من الحالات فإنك في الغالب تود الحصول على الدولة التي يوجد فيها هذا العنوان.. لحسن الحظ أي دولة لديها Range معين من العنواين وبالتالي يمكن بكل سهوله بعد الحصول على الIP هو التحقق من وجوده في المدى المعين للدولة وعند دخوله في ذلك المجال فمباشرة تستطيع القول بأن هذا الIP من الدولة الفلانية..

هناك بعض من المواقع تقدم هذه الخدمة كwhois ip ، وبعض من المواقع تقدم database صغيرة تستطيع تحميلها في جهازك مثلا:

http://ip-to-country.webhosting.info

http://software77.net/geo-ip/

http://www.maxmind.com/app/geoip_country

سوف نأخذ مثال على القاعدة الموجودة في الموقع الأول، فعند تحميلك للملف ip-to-country.CSV ستجده بهذا الشكل:

post-51148-12762812151352_thumb.png

العمود الأول هو أول IP في المجال والعمود الثاني هو أخر IP في المجال، اما العمود الثالث والرابع فما رمز الدولة بحرفين وثلاثه والعمود الأخير هو اسم الدولة لكل من العناوين الموجودة في العمود الاول والثاني.. لاحظ أن العنوان ليست مكتوبة بالصيغة التقليدية A.B.C.D لكنها مكتوبه على شكل عدد صحيح حتى يسهل تخزينها والمقارنة فيما بينهما..

ولكي يتم تحويل الIP على شكل عدد ، يتم استخدام المعادلة:

اقتباس
A.B.C.D = A*256*256*256 + B*256*256 + C*256 + D

طريقة عمل الكلاس بسيطة، نقوم أولا بفتح هذا الملف والقرائه منه ثم تخزين هذه المعلومات في ArrayList ومن ثم ترتيبها ، وعندما تريد الاستعلام عن رقم IP ما ، فيتم البحث في هذه الArrayList باستخدام Binary Search ، أحب أن أشكر الCollections على توفير دوال Sort و BinarySearch للمبرمجين :) ..

يمكن القرائه من الملف بالطريقة العادية BufferedReader ولكني استخدمت Memory Mapped في هذا المثال حيث هي أسرع من الأولى في القرائه وان كان فارق السرعه في هذا المثال ليس بكبير ولكنه يوضح في أمثلة أخرى خصوصا عند العمل في الملفات الضخمة ..

عندما نريد عمل sort و binary search لأي كائن في ArrayList يجب أن يطبق implement هذا الكائن الComparable أو أن نرسل Comparator لهذه الدوال (sort,binarysearch) وفي داخل الComparator نوضح كيف تتم المقارنة في الكائن من النوع المعين.. وهذا ما قمت به في المثال using Comparator .

هذه الطريقة تتطلب بضعه ثواني كstartup (حتى يتم تحميل الملف في الذاكرة وترتيبه ).. ولكنها سريعه في البحث (أجزاء من الثانية)..

لاستخدام الكلاس:

 public static void main(String[] args) throws FileNotFoundException,IOException{
        String ip = "94.96.84.100" ;

        IP2Country ip2Country = new IP2Country();
        Country country = ip2Country.getCountry(ip);

        System.out.println(
            "Country Name: " + country.getName() + "\n" +
            "Country Code: " + country.getCode2() + "\n" +
            "Country IP  : " + ip
        );
    }

الكلاس موجود بالمرفقات

its quick and dirty

بالتوفيق :) ..

IP2Country.zip

تم تعديل هذه المشاركة بواسطة Wajdy Essam في 11 يونيو 2010 في 21:57

3

http://informatic-ar.com منصة تعليمية عربية في علوم الحاسب والبرمجة

https://moalfat.com  للكتب الالكترونية والكورسات التعليمية

Everything we see now is just an engineering solution based on old science

#2

جزيتم الجنه أخي الكريم

موضوع مميز كالعاده

شرح مميز

سوف القي نظره علي البرنامج لاحقا

لأن انا علي الموبيل

ربنا يسهل ونعمل مترجم للجافا علي الموبيل

تم تعديل هذه المشاركة بواسطة Eng.Hamzawy في 11 يونيو 2010 في 22:08

Software Developer
Mahmoudkelany.com


 

#3

برنامج مميز من أخ مميز,,

على فكره يا حمزاوي, رصيدك هيخلص على طول, خلي بالك,,

#4

مخاصمك يا وجدي

من سنة ونصف وأنا بقول يا جماعة إنجليزي بكلمات عربية ممنوع :unsure:

وآخر حاجة وجدي كاتبلي كلاس :(

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#5
علاء الصالحي كتب:

مخاصمك يا وجدي

من سنة ونصف وأنا بقول يا جماعة إنجليزي بكلمات عربية ممنوع :unsure:

وآخر حاجة وجدي كاتبلي كلاس :(

تحياتي

:lol:

#6

شكرااا يا اخ وجدى

اقتباس
its quick and dirty

:lol: :lol:

اقتباس
مخاصمك يا وجدي

من سنة ونصف وأنا بقول يا جماعة إنجليزي بكلمات عربية ممنوع

وآخر حاجة وجدي كاتبلي كلاس :(

:haha: :haha: :haha: :haha:

00020309t.gif

1958_1963.gif
#7
{هويدي} كتب:

برنامج مميز من أخ مميز,,

على فكره يا حمزاوي, رصيدك هيخلص على طول, خلي بالك,,

لا متخافش

اصل انا مش شغال من الرصيد

ويرلس الموبيل E5‎1

يدعم الويرلس

شكرا علي التنبيه أخ هويدي

Software Developer
Mahmoudkelany.com


 

#8

ألف شكر لك أستاذنا الكبير وجدى عصام

سيكون هذا الموضوع اضافة قوية لتطبيقات الويب الخاصة بنا

يمكن استخدامها لتخفيف الضغط على الموقع كما استخدمتها Google

فعند كتابة العنوان

post-165385-12763220703633_thumb.png

والضغط على الزر Enter يقوم باعادة التوجيه بناء على عنوان الجهاز IP Address للمستخدم

post-165385-12763221665071_thumb.png

فكرة جميلة جدا

لكن اخشى ان تتغير المجالات الموجودة فى المثال

هل تعتقد انها ثابتة بصورة نهائية ولن يطرأ عليها اى تغيير ؟

أتمنى ذلك

وشكرا لك مرة ثانية

تحياتى

1


﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾

الأنفال ۳۳                                  
 

#9

@محمد فتحي,

:D , إستنتاج جميل يا محمد,,

بس أظن موضوع الlocalization موش كده . فإن خادم جوجل (أو أي خادم أخر) عندما ياتي له طلب من العميل (Http Request) فإنه يحتوي على معلومات تكون في أول الطلب تسمى request headers و تحتوي على معلومات خاصه ببيئة العميل (اللغه, ال encoding , إلخ) وعن طريق هذه المعلومات يقوم الخادم بعمل localizations.

#10
{هويدي} كتب:

@محمد فتحي,

:D , إستنتاج جميل يا محمد,,

بس أظن موضوع الlocalization موش كده . فإن خادم جوجل (أو أي خادم أخر) عندما ياتي له طلب من العميل (Http Request) فإنه يحتوي على معلومات تكون في أول الطلب تسمى request headers و تحتوي على معلومات خاصه ببيئة العميل (اللغه, ال encoding , إلخ) وعن طريق هذه المعلومات يقوم الخادم بعمل localizations.

شكرا لك عزيزى هويدى

لكن اعتقد انا ايضا ان اعادة التوجيه REDIRECTION تتم بهذه الطريقة

أعرف جيدا ال Request headers و لكن جرب ان تكون فى مصر وتجعل ال System Locale انجليزى EN

واللغة ايضا English(united states) وادخل الى Google

ولاحظ ان اعادة التوجيه ستتم بنفس الطريقة

post-165385-12763533901061_thumb.png

post-165385-12763534262724_thumb.png

منتظر ردك

تحياتى


﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾

الأنفال ۳۳                                  
 

#11

فكرة جميلة أخي محمد،، ومن الممكن أن يقوم السيرفر بالتحقق بأحد هذين القيمتين ( user ip OR user locale) ويقوم بعدها بعمل ال redirection المناسب..

مثلا اذا كان الip ranges في السعودية ، واللغة الانجليزية فيقوم بعرض google SA (هنا بالاعتماد على الip).

أو مثلا اذا كان الip ranges من الهند واللغه العربية السعودية فيقوم بعرض google SA.(وهنا بالاعتماد على الLocale)

بالنسبة لل ip ranges فلا أعتقد انها تتغير (مجرد تخمين) وأعتقد أن دارسي الشبكات بامكانهم الافتاء في الموضوع..

وفقكم الله :).

تم تعديل هذه المشاركة بواسطة Wajdy Essam في 12 يونيو 2010 في 18:47

http://informatic-ar.com منصة تعليمية عربية في علوم الحاسب والبرمجة

https://moalfat.com  للكتب الالكترونية والكورسات التعليمية

Everything we see now is just an engineering solution based on old science

#12
Wajdy Essam كتب:

فكرة جميلة أخي محمد

شكرا لك أستاذ وجدى فأنت صاحب الموضوع

Wajdy Essam كتب:

من الممكن أن يقوم السيرفر بالتحقق بأحد هذين القيمتين ( user ip OR user locale) ويقوم بعدها بعمل ال redirection المناسب..

مثلا اذا كان الip ranges في السعودية ، واللغة الانجليزية فيقوم بعرض google SA (هنا بالاعتماد على الip).

أو مثلا اذا كان الip ranges من الهند واللغه العربية السعودية فيقوم بعرض google SA.(وهنا بالاعتماد على الLocale)

بالنسبة لل ip ranges فلا أعتقد انها تتغير (مجرد تخمين) وأعتقد أن دارسي الشبكات بامكانهم الافتاء في الموضوع..

وفقكم الله :).

اذا هو يعتمد على الاثنين ال ip وال locale

وأعتقد ان الأولوية لل ip

وننتظر رأى دارسى الشبكات

تحياتى


﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾

الأنفال ۳۳                                  
 

#13

جزاكم الله كل خير

#14

موش عارف موش قادر أبلع موضوع إن تطبيقات الويب تعتمد على عنوان ال IP في عملية ال localizations !

لماذا يقوم الموقع بالحصول على ال IP ثم يطلب من مقدم خدمه أخر (يقوم بتحول ال IP إلى بلد, لضمان صحة المعلومه بنسبة 100%) معرفة بلد هذا الطلب وهو في الأساس عنده HTTP request headers

#15
karim sherif كتب:

جزاكم الله كل خير

مرحبا بك اخ كريم

{هويدي} كتب:

موش عارف موش قادر أبلع موضوع إن تطبيقات الويب تعتمد على عنوان ال IP في عملية ال localizations !

لماذا يقوم الموقع بالحصول على ال IP ثم يطلب من مقدم خدمه أخر (يقوم بتحول ال IP إلى بلد, لضمان صحة المعلومه بنسبة 100%) معرفة بلد هذا الطلب وهو في الأساس عنده HTTP request headers

هو لن يطلب من مقدم خدمة اخر ان يعيد له اسم البلد

سنقوم بتسجيل ال IP ranges الموجودة فى مثال الاخ وجدى عصام فى جدول فى قاعدة البيانات

وبناء عليه يتم البحث على اسم البلد فى قاعدة البيانات باستعلام query بسيط

وليكن

SELECT country FROM locations 
WHERE myip BETWEEN minip AND maxip;

ويتم اعادة التوجيه على اساس اسم البلد

أظن لو ان استخدام ال request headers افضل لاستخدمتها Google بدلا من IP Address

وننتظر اراء الأخرين

تم تعديل هذه المشاركة بواسطة MOHAMED FATHEI في 13 يونيو 2010 في 12:36


﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾

الأنفال ۳۳                                  
 

#16

قمت باضافة تعديل بسيط وهو عرض صورة الدوله ... في الكود لم اقوم باي تغيير فقط اضفت صور الدول ،

ومن الخاصية code2 اعرف الصورة للدوله

post-82434-12764335706467_thumb.gif

src.rar

1
#18

أستخدام الip أظنها طريقة جيدة ،، فعندما يصل الrequest للسيرفر يقوم يقوم بفحص الip الموجود في Http Request ويقوم بعدها بجلب الدولة من خلال البحث في الجدول الذي يحتوي على الip-ranges وحينها يقوم بعمل redirect للصفحة المعينة..

اخي العيافي اضافة جميلة :)..

جزيتم خيرا..

http://informatic-ar.com منصة تعليمية عربية في علوم الحاسب والبرمجة

https://moalfat.com  للكتب الالكترونية والكورسات التعليمية

Everything we see now is just an engineering solution based on old science

#19
اقتباس
أظن لو ان استخدام ال request headers افضل لاستخدمتها Google بدلا من IP Address

أيون :D, هذا ما أريد أن أصل له, أريد مصدر هذه المعلومه القائلة بأن Google تسخدم IP Address بدل من ال Request Headers

اقتباس

they use Gates

ممكن توضح شويه يا أبا مشاري؟

#20
العيافـي كتب:

قمت باضافة تعديل بسيط وهو عرض صورة الدوله ... في الكود لم اقوم باي تغيير فقط اضفت صور الدول ،

ومن الخاصية code2 اعرف الصورة للدوله

post-82434-12764335706467_thumb.gif

تسلم اخ عثمان على هذه الاضافة القوية

تعتبر ميزة فى التطبيق عرض علم الدولة (فكرة جميلة)

Mohammed Mshari Ersan كتب:

they use Gates

What is Gates?

Can you show more details?

Wajdy Essam كتب:

أستخدام الip أظنها طريقة جيدة ،، فعندما يصل الrequest للسيرفر يقوم بفحص الip الموجود في Http Request ويقوم بعدها بجلب الدولة من خلال البحث في الجدول الذي يحتوي على الip-ranges وحينها يقوم بعمل redirect للصفحة المعينة..

اخي العيافي اضافة جميلة :)..

جزيتم خيرا..

مرحبا بالاخ الكريم وجدى عصام

تحياتى


﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾

الأنفال ۳۳                                  
 

#21

أخي هويدي أليس الip address يوجد في الhttp request ، ومن خلاله يتم الحصول على اسم البلد..

يمكن البحث عن Geolocation للمزيد :

http://en.wikipedia.org/wiki/Geolocation_software

بالتوفيق :)..

http://informatic-ar.com منصة تعليمية عربية في علوم الحاسب والبرمجة

https://moalfat.com  للكتب الالكترونية والكورسات التعليمية

Everything we see now is just an engineering solution based on old science

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…