
في بعض الحالات قد تحتاج وخلال برمجتك لتطبيقك أن تتحقق من إتصال اليوزر بالشبكة لغرض ما ، أو أن تقوم بجلب إسم الهوست أو إسم المستخدم أو حتى عنوان الأيبي لغرض ما اليوم جئنا لكم بشرح برنامج بسيط بلغة c# هذا البرنامج يتحقق من إتصال اليوزر بالشبكة ثم يطبع لك رسالة مفادها إذا كان متصلا أو لا وأيضا إن كان متصلا يعرض لك إسم الهوست وعنوان الأيبي .
أولا نستعرض لكم بعض صور البرنامج واللتي سنتعرف فيها عن البرنامج عن كثب ثم نأتي إلى كيفية عمل البرنامج خطوة بخطوة ، وكملاحظة أولية لن نركز في هذه التدوينة على الجانب الرسومي للبرنامج أو الواجهة الرسومية للمستخدم GUI بقدر ما سنركز على كتابة الكود يعني أنه سنركز فقط على الكود الخاص بالتحقق من الإتصال وجلب الهوست وعنوان الأيبي .
أولا : نقوم بفتح محرر أكواد سي شارب وننشئ مشروع جديد يمكن العمل على الكونسول أو GUI يعني إختر النوع Console Aplication أو Windows Aplication لا يهم النوع المهم هو تطبيق الفكرة في حالتنا هذه سنستخدم ال GUI طبعا لتكون الواجهة تفاعلية أكثر ويكون البرنامج أكثر وضوحا .
قبل كل شيئ ننوه إلى أننا وضعنا Label وصورة و Button في الواجهة ووضعنا Label مخفي أو قيمته فارغة تحت الصورة لعرض إسم الهوست وعنوان الأيبي فيه حيث سنخفي الصورة برمجيا ونغير في النصوص والألوان برمجيا .
في مكان the conection states أو حالة الإتصال سنقوم بتغيير هذا النص ولونه عند النقر على البوتون لرسالة تخبرنا ما إذا كان الإتصال ناجح أو لا .
 |
| هذه واجهة البرنامج عند فتحه للمرة الأولى |
طبعا في الصورة التالية سنقوم بالنقر على البوتون للتحقق من الإتصال وإن كان الإتصال موجودا كما هو حال إتصالي فسيقول انه موجود وإن كان لا سيقول لا حيث أخفى الصورة وعرض لنا الهوست والايبي وايضا غير لون label اللايبل الرئيسي للون الأحضر وقيمته ليخبرنا ان الإتصال ناجح .
 |
| هنا بوجود الإتصال أظهر لنا الإتصال ناجح بالأخضر وعرض لنا إسم الهوست وعنوان الأيبي |
هنا لما تعمدنا قطع الإتصال كما نشاهد في الأسفل في شريط المهام وتحققنا قال لنا أن الإتصال فاشل بالأحمر طبعا الأحمر والأخضر وما يكتب هو تنسيقات بإمكاننا التحكم فيها وتنسيقها كما نشاء كما أيضا قام بإخفاء الهوست وإسم الأيبي واللذان عرضناهما في السابق عندما كان الإتصال مفتوحا لأنه لا ينبغي عرضهما إلا في حالة نجاح الإتصال .
 |
| هنا عرض الرسالة أن الإتصال فاشل بعد قطع الإتصال . |
أولا نستدعي ال NameSpace والمسمى System.Net وأيضا System.Net.NetworkInformation والأول هو للتعامل مع الشبكة والحصول على عنوان الأيبي وإسم الهوست والثاني للتعامل مع الإتصال بالشبكة والتحقق من الإتصال .
بعد ذلك نعرف ثلاثة متغيرات الأول نوع نصي نسميه مثلا host وفيه نضع عنوان الدومين الذي سنختبر به الإتصال فالفكرة هنا أن نقوم بعمل تصفح او إتصال بموقع جوجل إن نجح هذا الإتصال فهذا يعني أنه يتوفر إتصال وإن فشل فهذا يعني انه لايوجد إتصال بالشبكة .
ثانيا متغير منطقي boolean والذي قمنا بتسميته result والذي قيمة البداية له هي false والذي سنغير قيمته بمجرد أن نتصل وينجح الإتصال ل true وإن فشل الإتصال نتركه false ، وأخيرا متغير نسمه cleint والذي يحوي داخله نسخة من الأوبجيكت WebCleint والذي سنستخدمه في عمل إتصال وتجهيزه .
بعد ذلك نقوم بعمل دالة الإستثناءات try و catch ومن cleint.OpenRead وقوسين داخلهما نضع إسم النطاق الخاص بالموقع الذي سنفتحه او سنتصفحه لإختبار الإتصال ضع أي موقع وليكن مثلا google والمخزن إسم نطاقه لدينا في المتغير هوست طبعا open read تفتح وتقرأ أو لنعبر انها تتصفح الموقع إن نجح الغتصال وتصفح الموقع فهذا يعني أنه يوجد إتصال بالشبكة وإن فشل فمعناه لا يوجد طبعا أو أن هناك خطأ ما .
وعليه نجعل المتغير boolean في حالة النجاح ترو لاننا لاحقا سنقوم بعمل شرط بناءا عليه لطبع النتيجة وإن فشل نتركه على حاله أو نقوم بوضع داخل جملة ال catch قوسين ونضع
Exception لإلتقاط الخطأ وطباعته لكننا لن نقوم بهذا نترك المتغير ب false ولاحقا سنضع شرط نطبع فيه رسالة مفادها فشل الإتصال في حالة فشله .
طبعا هنا سنقوم بجلب إسم الهوست وعنوان ip ونقوم بعرضه في حالة نجاح الإتصال حيث سنعرف متغير سترينغ نسمه مثلا hostName بطبيعة الحال قيمته ستساوي Dns.GetHostName طبعا هنا نحن نتعامل مع ال nameSpase المسمات System.Net وفي الحالة السابقة تعاملنا مع النايم سبايس نتورك إنفورمشن طبعا من dns إجلب الهوست نايم وخزنه في المتغير طبعا سيصبح المتغير hostName يحوي إسم الهوست طبعا والذي سنستعمله لاحقا في جلب عنوان الأيبي حيث عرفنا متغير أسميناه ipName ومن Dns.GetHostByName قوسين ونضع إسم الهوست المخزنة في المتغير السابق ثم AddressList[0].toString
يعني أننا هنا وصلنا لل AddressList والتي هي عبارة عن مصفوفة القيمة ذات ال index صفر فيها هي عنوان الأيبي طبعا كل هذا عبارة عن اوبجيكتات وكلاسات فلا تقلق المهم أننا هنا وصلنا لل ip وأيضا وصلنا سابقا للهوست حيث أنها تحوي بعض المعلومات داخل AddressList حيث اول قيمة فيها هي ip اما الهوست نايم فإسمها مخزن داخل المتغير hostName طبعا القرق بين GetHostName و GetHostByName ان الأولى تسمح لنا بالوصول لإسم الهوست فقط أما الثانية فللهوست نفسها وكل المعلومات الخاصة بها .
طبعا في الأخير حان وقت الطباعة حيث وضعنا شرط if وإستثناء else وقلنا لهما إن كان ال result ب true نفذ كذا غيره نفذ كذا ، طبعا إن كان بترو أولا قمنا بإخفاء الصورة من النافذة ثم في ال label الرئيسي سنطبع عبارة The Conection Is Saccess طبعا تطبع ما تشاء ثم بعد ذلك في اللايبل المخفي أو الذي لا قيمة له سنطبع إسم الهوست وعنوان الأيبي بتنسيقات من إختيارنا .
أما في ال else فسنطبع أن الإتصال غير ناجح ونقوم بإفراغ ال lable المخفي حتى لا يبقي لنا إسم الهوست وعنوان الأيبي عندما نقوم بالتحقق من الإتصال مرة فيكون ناجح وعندما نتحقق منه مرة أخرى فيكون فاشل حيث سيمسح معلومات الهوست وإسم الأيبي .
طبع صديقي هنا نكون قد إنتهينا من طرح الموضوع إذا أعجبك الموضوع أو إستفدت منه لا تنسى مشاركته مع أصدقائك لتعم الفائدة وأيضا شاركه على مواقع التواصل الإجتماعي ، أتمنى أن أكون قد أفدتكم ، والسلام عليكم ورحمة الله وبركاته .