مقدمة إلى ربط الأجهزة على الشبكات من خلال Sokets - الجزء الأول - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : قسم لغة السي شارب C#.NET (http://vb4arb.com/vb/forumdisplay.php?fid=175) +--- قسم : قسم مقالات C#.NET (http://vb4arb.com/vb/forumdisplay.php?fid=177) +--- الموضوع : مقدمة إلى ربط الأجهزة على الشبكات من خلال Sokets - الجزء الأول (/showthread.php?tid=5605) |
مقدمة إلى ربط الأجهزة على الشبكات من خلال Sokets - الجزء الأول - RaggiTech - 14-10-12 كاتب الموضوع : أحمد جمال
بسم الله الرحمن الرحيم .السلام عليكم ورحمة الله وبركاته . أصبح من أكثر التطبيقات المطلوبة شيوعاً هي التطبيقات التي تعمل على شبكة Network أو التطبيقات التي تتطلب ارسال البيانات من جهاز إلى آخر ، سواء أكان ذلك في برامج متخصصة مثل برامج Messenger أو كجزء من برامج عادية كبرامج لإدارة الشركات على شبكة . ولتطبيق هذه الحالة يتم اللجوء لما يسمى بال Sockets ، ولمستخدمي فيجوال بيسك فقد كانت هناك أداة اسمها Winsock تقوم باستخدام هذه ال Sockets ، وفي .net سوف نقوم بالتعامل مباشرة مع المجال System.Net.Sockets . وقبل البدء ، ففي مثالنا هذا سوف نتعامل مع Server (خادم) و Client (عميل) حيث يقوم الخادم بانتظار البيانات من العميل . ولكن قبل أن تتم هذه العملية فلا بد أولاً من التعرف على الخادم والعميل ، ويتم ذلك عبر ال IP الخاص بهما ، وفي حالة كونك تجرب المثال على جهازك الشخصي فإن ال IP لكل من السيرفر والعميل سيكون : 127.0.0.1 . النقطة الأخرى التي لا بد من الاتفاق عليها هو رقم المنفذ ، ورقم المنفذ هو رقم Integer مع مراعاة انه في العادة فإن الأرقام الأولى يتم استخدامها من قبل نظام التشغيل . في دورسنا هذه سوف نتعلم كيفية عمل Client مع Blocking ومن ثم سوف نواصل لنتعلم كيفية عمل ال Server مع Non-Blocking . وسأحاول خلال الشرح الالتزام بالشرح بكل من C# و VB.net حيث سأوزع الكود بينهما وأتمنى أن يكون ذلك أيضاً بالنسبة للمرفقات . وأخيراً هناك الدرس المثبت في القسم والخاص بكيفية التحويل من C# إلى VB.net والعكس . والآن خطوتنا الأولى هي رسم الشاشة ، حيث سنقوم بوضع مربعي نص واحد لرقم ال IP والذي سيكون 127.0.0.1 في حالة التجربة ، والآخر من أجل رقم المنفذ والذي سنفترض انه سيكون 10500 . مربع نص ثالث مع زر أمر خاص بارسال البيانات ، ورابع مع زر أمر خاص بانتظار البرنامج حتى وجود بيانات تتم قرائتها حيث يقوم بالقراءة كل مدة معينة مبدئياً ، ولاحقاً سوف نتعرف على المشكلة من هذا النوع ونقوم بعمل حل بديل في الدروس القادمة ، وسوف نتعرف على جميع هذه العمليات تفصيلاً بإذن الله . خطوتنا الأولى هي اضافة المكتبات التي نريد ، وكمبرمج فيجوال بيسك سوف تكتب السطر التالي : كود : Imports System.Net.Sockets كود : using System.Net.Sockets; كود : m_socListener = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp); وقبل ذلك لا بد من تعريف نسخة m_socListener حيث يتم تعريفها في Gerneral في فيجوال بيسك بالشكل التالي : كود : Dim m_socListener As Socket كود : Socket m_socListener في البارميتر الأول قمنا بتحديد نوع ال Adressing الذي سنقوم باستخدامه وهو InterNetwork وهو الخاص ب IP v4 ، وستجد رموزاً أخرى لأنواع مختلفة مثل AppleTalk . البارمتير الثاني قمنا بتحديد نوع ال Sockets الذي نرغب في استخدامه وهو الذي يعتمد على مبدأ Streaming وأخيراً في البارميتر الثالث قمنا بتحديد نوع البروتوكول المستخدم والذي سيكون TCP/IP . الخطوة الثانية هي بدء ربط هذا الكائن ، والذي سنحتاج في هذه الحالة إلى معرفة ال IP ورقم المنفذ Port وهو ما يوفره لنا النوع IPEndPoint والذي يمكن استخدامه بالشكل التالي - لو كنت مبرمج C# - : كود : System.Net.IPAddress ipAdd = System.Net.IPAddress.Parse(TextBox1.Text); كود : Dim ipAdd As System.Net.IPAddress = System.Net.IPAddress.Parse(TextBox1.Text) كود : Try كود : try كود : String szData = "Hello There"; كود : Dim szData As String = "Hello There" كود : m_socListener.Close () نكتفي بهذا القدر في هذا الدرس ، ونعود للمواصلة مع ارسال البيانات في درس قادم . والله الموفق ... والسلام عليكم ورحمة الله وبركاته . |