بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
منذ ايام الـ VB 6.0 كنا قد استمتعنا كثيرا بالوينسوك وطورنا برامج عديدة للشبكة بإستخدمها ... وعندما جاءت الدوت نت ... تفاجىء الكثيرين بان الوينسوك اختفت وبدأنا عصر جديد وهو برمجة السوكت او الـ Sockets .... وهو عصر نفر منه الكثيرين وكرهوا التعامل معه بعد السهولة التي استمتعوا بها مع الوينسوك الحبيبة .... بينما وعلى النقيض تماما هاجت مشاعر الفرحة العارمة لذى البعض الآخر والذين احبوا هذا العصر الجديد كثيرا وشعروا بانهم اكثر قوة ولديهم مرونة اكبر طالما حلموا بها !!
بين هذا وذاك ضاع الكثيرين .... وفقدوا حماسهم لبرمجة الشبكات ولم يعد لديهم الشهية التي كانت لديهم لهكذا برامج.
من هذا المنطلق ارى بانه قد حان الوقت لإعادة إحياء تراث دثره الزمن و وجب في نظري إسالة لعاب الشباب من جديد لهذا المجال الرائع حتى نرى البرامج الشبكية تغزو منتداياتنا من جديد.
وهنا انا امام أمرين .... الاول هو الذهاب كما ذهب غيري من الشباب جزاهم الله عنا خيرا ... في شرح هذا الاسلوب البرمجي الجديد Sockets باانواعه واقسامه وادواته المتوفرة في اطال العمل كالـ (Socket, TcpClient, UdpClient ..... و و ) .... وكيفية التعامل معها خطوة بخطوة .
وهو وإن كان الاسلوب الامثل إلا انني لن انتهجه هذه المرة .... لان مشوراه طويل و لن اتمكن من تغطيته دون جهد ووقت كبيرين قد لا اكون امتلكهما للأسف الشديد حاليا.
وسوف اللجأ في هذه المرة الى بناء ادوات خاصة اضعها بين يديك نعتمد عليها وتكون منطلقنا نحو عالم برمجة الشبكات سويا.
فأنا اؤمن بان الكثيرين يهدفون من البداية الى بناء برامج للشكبات من الوهلة الاولى
ودون ان الاضطرار الى تعلم كل صغيرة وكبيرة في كيفية الارسال و الاستقبال نفسها.
مثال على ذلك المستخدون القدامى (لا اعرف لما تذكرني العبارة السابقة بمصطلح المحاربون القدامى ؟!) للوينسوك قد استخدموها كثيرا في تصميم برامج اكثر من رائعة .... لكن القليل منهم فقط يعلم كيف تعمل هذه الاداة ؟! .... وما الذي يجري عندما تطلب امر الارسال او الاستقبال ... وكل ما تعرفه بان البيانات ذهبت الى الطرف الآخر .. كما انه اذا جاءت اي بيانات الى برنامجك فانه يوجد ببساطة يوجد حدث يعلمك بذلك DataArrival.
كان ذلك اكثر من كافي للكثير من المبرمجين .... وللأسف الشديد الامر ليس كذلك في الدوت نت!
فلايوجد احداث ولايوجد اشياء جاهزة تستخدمها ... اذا اردت شيئا ... اصنعه بنفسك! ... وهذا يشبه كثيرا اسلوب مطاعم Help Your Self ... أو اخدم نفسك بنفسك .... وهذا الاسلوب محبب لذى الكثيرين (مثلي ولكن في بعض الاحيان) .... ومكروه لذى الكثيرين (مثلي ايضا !! ولكن في اغلب الاحيان هذه المرة) ... فالكسل شيء قبيح اتصف به للأسف الشديد وهو امر لايستهان فيه ويكفي ان النبي الكريم صلوات ربي وسلامه عليه كثيرا ما كان يتعود من الكسل .... لهذا ارجوا ان لا يستهين الكُسالى بكسلهم وان لا يغضوا الطرف عنه ويتجاهلوه بل ان يكثروا بالتعوذ بالله العظيم منه.
ولكي لا اظلم نفسي وفئة كبيرة مثلي فنحن لسنا كُسالى بقدر كراهيتنا للراتبة ... فالرتابة في كل شيء مميته و التكرار وان كان يعلم الشطار فهو مدمر كالاعصار .... فلا احب ان اكتب عشرات السطور البرمجية (مرارا وتكرارا) ودائما كي ارسل رسالة من برنامج معين (المرسل) .... واكتب اكثر منها في الطرف الآخر(البرنامج المستقبل) كي استقبل رسائل برنامجي الاول.
نعم من المفيد ان يعرف الجميع ماذا يجري في الخفاء ... ولكن الاجمل ان تكتب اكوادك الخاصة التي تقوم بالارسال و الاستقبال الممل وتغلفها Encapsulation و تحقيق مبادىء الشفرة القابلة لإعادة الاستخدام Code Reuse وهو مبادىء يعرفها ويعيها تماما شباب البرمجة كائنية التوجة OOP.
فمن منا يكره ان يكون قادرا على ارسال رسالة الى كمبيوتر آخر بعيد في الشبكة بسطر واحد فقط مثلا :
skt.Send( "How are you Ragheed?" , "AnyComputerName",45000)
لاحظ ان الشفرة تستخدم متغير skt وهو اداتنا الجديدة بدل الوينسوك لإرسال رسالة فيها كيف حالك يارغيد "How are you Ragheed" الى كمبيوتر آخر اسمه AnyComputerName على المنفذ 45000.
وفي الجهة المقابلة (الكمبيوتر البعيد) أليس من الجميل ان يكون هناك حدث مثلا TextReceived يخبرنا بان هناك رسالة جديدة ... ويمكننا ا ن نعرضها ايضا بسطر واحد ! ... هكذا :
Private Sub skt_TextReceived(ByVal Sender As Object, ByVal e As TextReceivedEventArgs) Handles skt.TextReceived
MsgBox(e.Text,,"رسالة جديدة")
End Subوهو ما ساقوم به هنا بإذن الله تعالى ... ساقوم بتغليف دوال الارسال و الاستقبال في الدوت نت في مكتبات dll خاصة بنا واصنع اداوات يمكننا ان نستخدمها في برامجنا بسهولة وسنبني سويا بعض البرامج الشبكية بإستخدامها.
وبما اني حاليا اطور الاصدار الاول من المكتبة rtaUDPSocket وهي اداه بسيطة لإرسال و استلام البيانات في الشبكة ..وساضع اصدارها الاول هنا بإذن الله تعالى في اليومين القادمين.... فإنني انتظر اقتراحاتكم بشأن ماهي البرامج التي تحبون ان نبدأ بها كأمثلة على استخدام هذه الاداة الجديدة
تحياتي
السلام عليكم ورحمة الله وبركاته
