تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
سلسلة دروس في إحتراف الوينسوك ( موضوع متجدد )
#1
بسم الله الرحمن الرحيم

دورة إحتراف الوينسوك


المحتويات :

شرح الوينسوك .
برمجة برنامج بسيط بواسطة الوينسوك .
عمل إتصال عكسي .
برمجة برنامج محادثة.
مشروع نقل الملفات المباشر .
مشاريع متطورة مفتوحة المصدر تستخدم الوينسوك وهي منقولة من مواقع أجنبية وعربية .


بإذن الله ستجدون شروحات الأكواد بطريقة رائعة ، والبرامج التي يتم تصميمها منفصلة وتستطيعون برمجة كل واحد على حدة .


في هذه المقالة توجد فكرة طاغية على مجمل موضوعاتها وهي الإتصال العكسي ، لأنه هي التقنية المستخدمة في كل البرامج الحديثة ، ولكن لا مانع من شرح الإتصال المباشر كنوع من الفائدة وزيادة المعلومات ، وليس لأنها فقط للفائدة يعني أن لا يقوم القارئ بالإطلاع عليها ، بالعكس هي ضرورية أكثر من الإتصال العكسي لأنها هي الأساس في الإتصال .

[COLOR="#FF0000"]
الدرس الأول :

الجزء الأول :
[/COLOR]

شروحات الوينسوك تختلف من شخص لآخر ، فكل منا يفهمها حسب طريقته .


الوينسوك هي أداة مرفقة مع الفيجيول بيسيك تقوم بعمل شبكة محلية مكونة من :
اقتباس: عميل / خادم .
عميل / عميل .

وقد تستخدم للتحكم في الأجهزة عن بعد ، أو حتى للربط بين برنامجين في نفس الحاسوب ،
الوينسوك تقوم بتنفيذ الأوامر فقط ، أي أنها لا تستطيع فتح سواقة الأقراص بدون أوامر خارجية ، فللوهلة الأولى يظن المبرمج أن الوينسوك تقوم بجميع المهمات الصعبة ، ولكن هي بالحقيقة لا تقوم سوى بعدة أوامر ومنها :

الإتصال .
إقتباس : نقل البيانات SendData .
إستقبال البيانات GetData .


بالنسبة للوينسوك ، فهناك مشكلة عدم وجودها مع إصدارات الويندوز ، و يحتاج المبرمج إلى إرفاقها أو دمجها مع برنامجه لكي يعمل .
ويمكن أيضا برمجتها بواسطة دوال API وإنشاء الــ Sockets .

[COLOR="#FF0000"]الشرح :
[/COLOR]

الإتصال ( Connect ) :


في حدث الإتصال يلزم 4 أمور رئيسية :
اقتباس: 1- إغلاق أي إتصال سابق
2- تحديد المنفذ .
3- تحديد عنوان الأي بي IP Address .
4- الإتصال.

سؤال يطرح نفسه : لماذا يجب إغلاق أي إتصال سابق ؟؟

لكي يتم تجديد الإتصال ، و إغلاق أي إتصال غير مكتمل وأي إتصال قديم.

وتتم عملية الإتصال كالتالي :

PHP كود :
Winsock1.close   
Winsock1
.Connect "127.0.0.1"303 
ومن الممكن أن توضع في العميل والخادم في الحالات التالية :

إقتباس : في الخادم : عند الإتصال المباشر من العميل إلى الخادم .
في العميل : عند الإتصال العكسي من الخادم إلى العميل .


الإنصات ( Listen ) :

عملية الإنصات هي حجز المنفذ الذي سيتم تلقي طلب الإتصال من خلاله وتكون بخطوتين :

اقتباس: تحديد المنفذ .
الإنصات .

وتتم كالتالي :


PHP كود :
Winsock1.LocalPort 303  
Winsock1
.Listen 

عملية الإنصات أيضا من الممكن أن توضع في كلا البرنامجين ( العميل / الخادم ) .



قبول طلب الإتصال ( Accept ) :

تتم عملية قبول طلب الإتصال بخطوتين :

إقتباس : إغلاق أي إتصال جديد .
قبول طلب الإتصال .

وتتم كالتالي :


PHP كود :
Winsock1.close  
Winsock1
.Accept requestID 

وتوضع شيفرة قبول طلب الإتصال في حدث الوينسوك Connection Request .



تحديد البروتوكول :

بروتوكولات الوينسوك عبارة عن بروتوكولين مختلفين تماما وهما :

إقتباس : TCP .
UDB .

البروتوكول TCP :

يستخدم إجراءات تأكيد وصول البيانات كاملة وعند فشل الإرسال تتم الإعادة من جديد .

البروتوكول UDP :

يعمل على توصيل البيانات بسرعة بدون التحقق من فشل الإرسال أو لا .

ولكن البروتوكول المعتمد في الإتصال والتواصل هو TCP ويكون في الغالب هو الأصل .

وتتم عملية تحديد البروتوكول كالتالي :

PHP كود :
Winsock1.Protocol sckTCPProtocol 
أو


PHP كود :
Winsock1.Protocol sckUDPProtocol 


إرسال البيانات ( SendData ) :

تتم عملية إرسال البيانات لكي يقوم الخادم بتنفيذ الأوامر المطابقة للبيانات المستلمة .

وتتم بخطوتين :

إقتباس : تجاوز الخطأ عند وجود أي خطأ .
إرسال البيانات .


كالتالي :


PHP كود :
On Error Resume Next 
Winsock1
.SendData "HAMADA" 


إستقبال البيانات ( GetData ) :

تتم عملية إستقبال البيانات بخطوتين في الأغلب وهي :

اقتباس: تعريف متغير يحمل قيمة نصية .
إسناد البيانات المستقبلة إليه .

وتكون كالتالي :

إقتباس :Dim Data as String
Winsock1.GetData Data

وتوضع شيفرة إستقبال البيانات في حدث الوينسوك DataArrival .
ومن الممكن عمل جملة Select case إذا كانت البيانات القادمة كثيرة .


إضافة الأداة :

تتم إضافة الأداة إلى المشروع كالتالي :

اقتباس: ctrl + T > Microsoft Winsock Control 6.0



الجزء الثاني :


برمجة برنامج بسيط بواسطة الوينسوك

بعد إعتماد شرح الوينسوك السابق ، دعونا ننتقل إلى المستوى الأعلى ، وهو برمجة الإتصال

أولا :ً برمجة الإتصال المباشر ( من العميل إلى الخادم ) :

العميل :

في برنامج العميل نحتاج للأدوات التالية :

أداة الوينسوك .
2 صندوق نص واحد لعنوان الأي بي ، والآخر للمنفذ .
3 ليبل .
تايمر ( Interval = 1 )
2 زر كوماند واحد للإتصال وواحد لقطع الإتصال .

ونسقها لتصبح على شكل برنامج محادثة .



كتابة النص البرمجي :

العميل :

في زر الأمر ( إتصال ) :


PHP كود :
On Error Resume Next 
Winsock1
.Close 
Winsock1
.Connect Text1.TextText2.Text 

حيث إنه تم طلب الإتصال عبر المنفذ 303 بعنوان الآي بي إفتراضي وهو 127.0.0.1 والموجودان في صندوقي النص Text1 , Text2 .

في زر الأمر ( قطع الإتصال ) :
PHP كود :
On Error Resume Next 
Winsock1
.Close 
Winsock1
.listen 
حيث إنه يتم إغلاق الوينسوك وينقطع الإتصال ، و تتم حالة إنصات جديدة .

في التايمر :



PHP كود :
Dim State 
For State 1 To 10 
Select 
Case Winsock1.State 
Case sckClosedLabel1.Caption " لا يوجد إتصال   " 
Case sckClosingLabel1.Caption "قام الخادم بقطع الإتصال " 
Case sckConnectedLabel1.Caption "متصل" 
Case sckConnectingLabel1.Caption " يتصل بالخادم " 
Case sckConnectionPendingLabel1.Caption "الإتصال معلق" 
Case sckErrorLabel1.Caption "خطأ في الإتصال " 
Case sckHostResolvedLabel1.Caption " تمت معالجة البيانات " 
Case sckListeningLabel1.Caption "منصت " 
Case sckOpenLabel1.Caption "الإتصال مفتوح" 
Case sckResolvingHostLabel1.Caption "تتم الآن معالجة البيانات " 
End Select 
Next State 


تم الإنتهاء من العميل .



الخادم :

في برنامج الخادم نحتاج لأداة الوينسوك فقط .

النص البرمجي :

في كود تحميل الفورم :


PHP كود :
Winsock1.Close 
Winsock1
.LocalPort 303 
Winsock1
.Listen 



حيث إنه يتم إغلاق كل الإتصالات ، وتم تحديد المنفذ 303 ليكون منفذ الإنصات .

في الحدث Connection_Request للوينسوك :


PHP كود :
On Error Resume Next 
Winsock1
.Close 
Winsock1
.Accept requestID 

حيث إنه يتم إغلاق جميع الإتصالات ، ويتم قبول طلب الإتصال Accept .
تم الإنتهاء من الخادم . وتستطيع تجربة البرنامج وفحص الإتصال .


يتبع ......
متغيب
الرد }}}
تم الشكر بواسطة:


الردود في هذا الموضوع
سلسلة دروس في إحتراف الوينسوك ( موضوع متجدد ) - بواسطة Ahmad Jawad_mybb_import4460 - 17-09-12, 09:56 PM

المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  سلسلة دروس الحماية ( للمبتدئين , المتوسطين , المتقدمين ) + تطبيقات جاهزة للاستخدام Ahmad Jawad 6 8,011 02-06-16, 11:45 AM
آخر رد: CLARO

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم