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

حوار بينى و بين عضو حول ال winsock

مغلق
بدأه طارق إبراهيم في 6 يوليو 2004 · 39 رد · 7,581 مشاهدة · في قسم الدروس والمواضيع الهامة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

هذا هو حوار تخيلت فيه ان احد الاعضاء يسال حول الوينسوك

************************************************************

العضو: السلام عليكم

طارق: و عليكم السلام و رحمته و بركاته

العضو : اخ طارق من الفريق العربى للبرمجه

طارق : نعم

العضو : مرحباً …. هل يمكنك مساعدتى اخ طارق

طارق: إن استطعت إن شاء الله

العضو: اريد منك توضيح لكيفية عمل برامج العميل / الخادم

طارق: اه اولاً قبل ان ابدأ اريدك ان تعرف انه قبل البدأ فى هذا البدا فى مثل هذه النوعيه من التطبيقات لابد و ان يكون مستواك فى الفيجوال بيسك متوسط او اكثر قليلاً اى انك تستطيع التعامل مع ادوات التحكم الاساسيه و مصفوفة الادوات و تستطيع عمل الدوارات و الشرط و التعامل مع المصفوفات والاجراءات و الدوال و التعامل مع الملفات

العضو: الحمد لله

طارق: ايضاً يجب ان تملك معرفه اساسيه حول الشبكات و البروتوكولات الاساسيه

العضو: هل من مكان استطيع البدأ منه

طارق: نعم http://www.msdn.microsoft.com و ابحث حول الوينسوك

العضو: شكراً لك و الان هل يمكن ان نبدأ قليلاً

طارق: اولاً هناك العديد من الادوات التى يقدمها لك افيجوال بيسك للتعامل مع الاتصالات الشبكيه سواء عبر انترنت او فى شبكه ايضاً و الاتصالات الهاتفيه

العضو: ما هى هذه الادوات

طارق: Winsock وهى مثار حديثنا و internet transfer control و web browser control و msocm

طارق: بالاضافه إلى دوال ال API و ادوات اخرى تقدمها بعض الشركات للمبرمجين

العضو: ما هى فائدة الاداه وينسوك

طارق : تمكنك هذه الاداه من صنع اى برنامج يعتمد فكرة العميل – الخادم مثل برامج الشات والوصول إلى قواعد البيانات و …..

العضو(مقاطعاً) : و ماذا عن ……

طارق (مقاطعا) : نعم وبرامج الاختراق

العضو: كيف يمكننى استخدام هذه الاداه إذاً

طارق: اولاً عليك بإضافة الاداه إلى برنامجك من قائمة PROJECT ثم COMPONENT ثم MICROSOFT WINSOCK

العضو: نعم وماذا عن الاكواد اللازمه

طارق: لا تتعجل … الان ماذا يحدث إن اردت الاتصال هاتفياً بى

العضو: ساطلب رقمك ثم اسال عنك

طارق: جميل إذاً فى الاول ان تعرف رقم هاتفى ثانياً تقوم بعمل الاتصال

العضو: نعم

طارق:اى انك يجب ان تعلم رقمى نفس الفكره سنستخدمها هنا يجب ان تعلم ال ip الخاص بالخادم

طارق: اولاً سيكون لدينا برنامجين واحد ينفذ الاول الاوامر و سنسميه الخادم server و الاخر هو العميل الذى يوجه الاوامر

العضو: احب هذه اللغه البسيطه … اكمل من فضلك

طارق: لا تقاطع إذاً إلا لو لم تفهم شيئاً

طارق: الان نحن فى برنامج العميل الذى سيقوم بالاتصال مع الخادم اولاً

Swsck.connect serverip,port

حيث ان swsck هى اسم الوينسوك و ال Port هو رقم البورت

العضو: انت الان استخدمت الطريقه connect و مررت لها وسيطتين الاولى هى رقم ال ip الخاص بالخادم و الثانيه هى البورت المفتوح لدى الخادم والذى سيستقبل الاتصال عليه

طارق: ارى انك معى الان …. دعنا نكمل إذاً

طارق: سنبرمج كل خطوه منطقياً الان افتح برنامج الخادم واضف له اداه وينسوك جديده

العضو: تمام

طارق: ماذا يحدث عن ناديت على الخادم فى المطعم

العضو: سيأتى على و يستمع إلى طلباتى و يكتبها فى ال النوته اللى معاه

طارق: بسم الله ما شاء الله محترف

العضو: من بعض ما عندكم

طارق : انا سانفذ كلامك ولكن برمجياً

اكتب هذا الكود لكى يستمع خادمك على العميل فى الحدث form load

Cwsck.listen

طبعاً cwsck هى اسم اداة الوينسوك عند العميل

العضو : واين طلبات العميل التى سيرسلها

طارق: لا تتعجل

طارق : طبعاً الخادم سيقبل طلبك و لكن كيف نكتب هذا القبول برمجياً

العضو :

if the server did not accept the order then
 he will be fired
 end if

طارق : funny

طارق : فى الحدث connection request للاداة وينسوك فى برنامج الخادم اقبل الاتصال

Cwsck .accept requestid

العضو : لا افهم

طارق : الخادم قبل اتصالك و اعطاك رقم للطلبيه اللى هو requestid

العضو : فهمت

طارق : الحمد لله

طارق : سنرجع للعميل سافرض ان العميل سيوجه رساله نصيه للخادم ضع اداة نص و زر

افضل ان تعرف متغير عام ليحمل الرساله النصيه

الان عندما تضغط الزر سيقوم برنامجك اللى هو العميل بتوجيه الرساله النصيه للخادم

فى كود الزر

Mymessage=text1.text

حيث ان mymessage هى المتغير الذى قمت بتعريفه و سيحمل اوامرك للخادم

العضو : مفيش مشاكل

طارق : الان سنرسل البيانات فى اى مكان ضع به هذا الكود

Swsck.senddata mymessage

العضو: سهله انت استخدمت الطريقه senddata لإرسال قيمة المتغير إلى الخادم

طارق : نعم …. اظنك ترى ان الاكواد مفهومه منطقياً

العضو : نعم

طارق : دعنا نتابع إذاً

ارجع للخادم و ستجد حدث اسمه dataarrival للاداه وينسوك

فى هذا الحدث سيستقبل الخادم قيمة المتغير التى ارسلتها له

العضو : اعتقد إذاً انه يجب على ان اعرف متغيراً يحمل قيمة المتغير التلى ارسلها العميل لبرنامجى

طارق : تمام هذا ما سيحدث بالفعل

فى الحدث dataarrival

Cwsck.getdata recieeddata

حيث ان recieveddata هو المتغير الذى قمت بانشائه ليستقبل اوامر العميل

العضو: طيب وهو حيفهم كلامى ازاى دلوقتى … اقصد حينفذه ازاى

طارق : بما انا نعلم انها رساله نصيه فييمكنك ان تجعل الخادم يعرضها عن طريق ال message box او يضعها فى ملف او اى شئ اخر يترائى لك

العضو : طيب وماذا لو ان المطعم لا يحتوى إلا على خادم واحد يعنى الخادم حينفذ طلبات اكثر من زبون اقصد عميل بلغتنا

طارق : بلغتنا يبقى حنسميها multi connections متعدد الاتصال

و فى هذه الحاله ساضطر لان اجعلك تفكر واتمنى الا تكون من المؤمنين بأن التفكير ضار جداً بالصحه

بمعلوماتك تفتكر اعمل ايه

العضو : نستورد اكتر من خادم من الفلبين

طارق : يا سلام عليك يا واد يا بكار …. حنعمل مصفوفة ادوات يا ذكى و حنعمل index لمصفوفه من الوينسوك

العضو : متاكد

طارق : "لا تجادل و لاتناقش و إلا وقعت فى المحظور" (مزحه) … الكلام من مايكروسوفت

اقتباس
Accepting More than One Connection Request

The basic server outlined above accepts only one connection request. However, it is possible to accept several connection requests using the same control by creating a control array. In that case, you do not need to close the connection, but simply create a new instance of the control (by setting its Index property), and invoking the Accept method on the new instance

و هذا هو الكود

Private intMax As Long

Private Sub Form_Load()
   intMax = 0
   sckServer(0).LocalPort = 1001
   sckServer(0).Listen
End Sub

Private Sub sckServer_ConnectionRequest _
(Index As Integer, ByVal requestID As Long)
   If Index = 0 Then
      intMax = intMax + 1
      Load sckServer(intMax)
      sckServer(intMax).LocalPort = 0
      sckServer(intMax).Accept requestID
      Load txtData(intMax)
   End If
End Sub

العضو : اهذا كل شئ

طارق : اعتقد انه بإستيعابك ما قلته لك ثم ببحثك عن مواضيع خاصه بالوينسوك و كتابتك لبرنامج صغير تتطبق فيه ما قلناه سيكون رائعاً

العضو : اشكرك اخ طارق

طارق : العفو … استاذنك الان

العضو : إلى اللقاء

تم تعديل هذه المشاركة بواسطة طارق إبراهيم في 29 ديسمبر 2004 في 08:25

1 −1

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

#2

الله يعطيك العافية أخي طارق إبراهيم ..

وأنا أحتاج الشرح في هذا الموضوع ..

وأعتقد إن الأخوة الزملاء مثلي ..

سأقرأ الشرح وسأقوم بعمل برنامج بإذن الله حول هذا الموضوع وراح تكون أخي طارق إبراهيم أول واحد يطلع على البرنامج ..

أخوك Baihan

#3

اتمنى ان ارى تفاعلاً هنا و إن احتجت لمساعده فانا موجود

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

#4

شرح سليم لاستخدام هذه الاداة... و يجب الملاحظة ان ال Index parameter يتم اضافته عند وضع خاصية ال Index الى 0 ... لذا ستلاحظ ان ال Visual basic تضع هذه الخاصية في كل الاحداث...

مثال: حدث Winsock_Connect لا يوجد معاه parameteres لكن عند عمل مصفوفة من الاداة يتم وضع ال Index هكذا

Winsock_Connect(byval Index as integer)

راكان الحنيطي

Be Open Source

opensource-550x4752.gif

#5

راكان هل انتظر مشاركتك قبل ان ابدا فى الحلقه الثانيه

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

#6

طارق ابراهيم

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

حقيقة فكرة حلوة

و الاسلوب أدبي جميل

ربنا يزيدك من العلم و الأدب

أخوك معتصم

#7
طارق إبراهيم كتب:
راكان هل انتظر مشاركتك قبل ان ابدا فى الحلقه الثانيه

لأ خذ راحتك انا اقوم بالاخراج.. التمثيل لك :)

انا فقط اضيف لقطات مفيدة للمسلسل لاجعله مثيرا :)

راكان الحنيطي

Be Open Source

opensource-550x4752.gif

#8

السلام عليكم

شكراً لكل من شارك و لكن يبدو انى ساعتذر من ان اكمل باقى الاداه لانه بالرغم من كثرة القراءات للموضوع لايوجد تفاعل معه

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

#9

السلام عليكم

الاستاذ الجليل طارق إبراهيم

والله من غير مجاملة عندما وقع نظري علي الموضوع ما ترددت لحظة واحدة و دخلت علية علي طول بالرغم من تأخر الوقت عندنا الان و مقهي الانترنت علي وشك ان يقفل ابوابة , وانا حتي الان لم ادخل او اتصفح الموضوع الذي جئت من اجلة , هذا اول شي و ثاني شي و الله انا من المهتمين جدا بمثل هذه المواضيع , فياريت وارجوك ان تواصل المزيد من هذا الكلام الذي يثلج الصدور وكلنا اذآن صاغية باذن الله فانا مثلا لاحب التعليق علي اي شي الا اذا تاأكد من الرد ذو فائدة او له حوجة , فالرجاء تكملة تفاصيل باقي الاداء جزاك الله عنا الاف الاف الخيرات و علمك ما ينفعك و ينفعنا وينفعك الله بما علمك .

اسف جدا للاطالة

و السلام عليكم

ابراهيم الطيب

الخرطوم السودان

gaza3-3.jpg
#10

ما شي ... انا عندي طلب... هل من الممكن للاعضاء الذين قرأوا لدرس يعملو برنامج chat ويضعوا الكود على المنتجى في هذا الموضوع لنرى كيف فهتمت الموضوع و اذا واجهتكم مشكلة احنا جاهزين

راكان الحنيطي

Be Open Source

opensource-550x4752.gif

#11

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

39_22.gif

تزود من التقوى فإنك لا تدري *** إذا جن ليل هل تعيش إلى الفجر

فكم من فتى أمسى وأصبح ضاحكاً *** وقد نسجت أكفانه وهو لا يدري

لقراءة القرآن الكريم و سماعه و تفسيره ........

ماذا يعني انني مسلم سني؟

قصة غريبة

ConflictResolution.gif

#12

يا جماعة الخير بالنسبة لي أنا جدا متحمس لمثل هذه المواضيع ..

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

وأنا أوعدك يا أستاذ طارق بانتاج برنامج في هذا الموضوع ... بس عطونا شوي وقت..

تحياتي ....

#13

حقيقه ردود الاستاذ عماد و إبراهيم الطيب و حماس Baihan ستجعلنى استمر

و لكن دعونا نطبق اولاً مافهمناه سابقاً وإلا فإن المخرج لن يخرج الحلقه الثانيه

اقتباس
هل من الممكن للاعضاء الذين قرأوا لدرس يعملو برنامج chat ويضعوا الكود على المنتدى في هذا الموضوع لنرى كيف فهتمت الموضوع و اذا واجهتكم مشكلة احنا جاهزين

و لن اطلبه متعدد الاتصال بل عميل واحد مع سيرفر واحد

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

#14

Ok أستاذ طارق إبراهيم ..

4 أيام بإذن الله وأعرض البرنامج في المنتدى..

ok man

#15

يا طارق ,

ممكن أخذ مهلة 4 أيام أيضا لأنى إلى لحظة كتابة هذه السطور مازلت مسافر

و أذخل على النت بصورة غير منتظمة

#16

أنا عندي كتاب رائع في شرح تلك الأداه بس مش فاكر بصراحه جايبه منين ممكن تقراه

RgheedLearnWinsock.pdf

#17

السلام عليكم ..

أخ طارق إبراهيم لقد قرأت الموضوع جيدا وفهمته واستفدت أيضا من برنامج كان قد طرحه الأستاذ راكان الحنيطي

حول نفس الموضوع وكان الكود هو جدا واضح .. طبعا البرنامج عبارة عن عميل واحد و خادم واحد ..

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

والحمد لله نجحت ولكن لدي ملاحظات :

1- ما المقصود بالبورت 1001 أو 3500 هل هو منفذ كرت الشبكة وهل هذا الرقم ثابت ؟

2- بالنسبة لل multi connections هل نضع مجموعة من ال Winsock على برنامج الخادم

أو نضع واحدة فقط ونضبط Index=0 ويتم تحميل كل Winsock حسب الطلب من خلال الأمر Load ؟

3- كيف يمكن تبادل الصوت من خلال أداة Winsock ؟

وأنا في انتظار الدرس الثاني بالإضافة إلى الإجابة على الأسئلة ..

وشكرا...

#18

1) هذا هو البورت المستخدم لعمل شبكة مع الخادم و تستطيع استعمال اي رقم بروت مكون من 4 ارقام (او 5 على ما اعتقد) ولكن يجب الحرص على ان هذا البورت غير مستخدم من قبل اي برنامج اخر مثلا 1863 للMSN

2) تضع مجموعة ال Winsock على الخادم لان الخادم هو الذي يريد استقبال اكثر من عميل لتمكين اكثر من مستخدم للدردشة مثلا. و هذه المجموعة يمكن عملها عند الحاجة اليها عندما يكون البرنامج قيد التنفيذ اما عن الاولى التي تحمل ال index=0 فهي التي نضعها والباقي على الكود

3) تبادل الصوت يتم من خلال احضار ال Data و هي المعلومات المخزنة في كرت الصوت على شكل binary و من ثم في الخادم او العملاء يتم وضع المعلومات المستخدمة في كرت الصوت لسماعها لكن لم اكتب كود يخص ذلك من قبل

ارجو ان اكون قد اعطيتك الجواب الشافي لهذا و اعلم انه يمكن عمل الكثير مع ال winsock

راكان الحنيطي

Be Open Source

opensource-550x4752.gif

#19

انا سعيد لان هناك من بدأ فى تطبيق الدرس و اكثر سعاده لان هناك من بحث عن هذه الاداه

إلى Baihan:

نشاط جيد ولكن دعنا نعمل خطوه خطوه ولاتسبقنا... اولاً اين مشروعك ثم سنعمل جميعنا على تطويره

إلى remono84 :

كنت ساضع رابط لهذا الموضوع من منتدى vb4arab و اول مره اعرف ان الاستاذ رغيب الطيب واللومانى قد وضعا هذا الدرس بصيغة PDF ارجو من الاعضاء تنزيل المرفق

إلى راكان :

انت تعلم مقدارك عندى وجودك معى هنا يسعدنى كثيراً واعتقد اننا يمكن ان نتناقش فى اسئله حول الاداه بدلاً من ان اكمل لاننى ساضع فقط مثال بسيط حول ACCEPTING MORE THAN ONE CONNECTION

بالمناسبه يا شباب راكان افضل منى فى استخدام هذه الاداه فلا تترددوا فى السؤال

تم تعديل هذه المشاركة بواسطة طارق إبراهيم في 17 يوليو 2004 في 04:59

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

#20

شكرا على المجاملة اخي طارق و كلنا طلاب علم هنا.

على كل بانتظار المثال و ان شاء الله نصوف الامثلة من الاعضاء الاخرين ايضا :)

راكان الحنيطي

Be Open Source

opensource-550x4752.gif

#21

السلام عليكم،

خلصت الواجب يا استاذ طارق. مرفق البرنامج الاصل والتنفيذي وهذه صورة له

Winsock.JPG

هو برنامج واحد تشغل منه نسختين اما في نفس الجهاز او واحدة في كلا الجهازين. تحدد اولا فيه local اذا كنت ستختبره على نفس الجهاز او remote اذا كنت ستختبره على جهاز آخر. اذا كان remote عبئ ال ip الرموت في الخانة العلوية فوقها. ثم تحدد احد البرنامجين server او client والآخر يكون عكسه. درسك اعجبنى يا استاذ طارق فحبيت انى اشارك فشكرا جزيلا لك وللجميع.

WinSock.ZIP

تم تعديل هذه المشاركة بواسطة عماد الخليل في 13 يوليو 2004 في 01:59

39_22.gif

تزود من التقوى فإنك لا تدري *** إذا جن ليل هل تعيش إلى الفجر

فكم من فتى أمسى وأصبح ضاحكاً *** وقد نسجت أكفانه وهو لا يدري

لقراءة القرآن الكريم و سماعه و تفسيره ........

ماذا يعني انني مسلم سني؟

قصة غريبة

ConflictResolution.gif

#22
250.gif

صورة
صورة

حسابي في الفيس بوك
http://goo.gl/XIzwL

حسابي في تويتر
http://goo.gl/6p4e3

 

 
 
#23

ما شاء الله عليك اخ عماد عندك فكرة حلوة عن الData parsing وهو تقسيم ال protocol.

جميلة و ان شاء الله نشوف من الاعضاء اكثر و اكثر

راكان الحنيطي

Be Open Source

opensource-550x4752.gif

#24

السلام عليكم ..

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

ولكن سأعود في فترة قريبة .....

أكرر أسفي للجميع وللأستاذ طارق إبراهيم .......... وشكرا..

#25

على العموم انا لدى بعض إرتباطات احاول الانتهاء منها

راكان : انا لاابالغ

استاذ عماد : انت اكبر منى سناً و مشكور على الواجب

biahan : من غير كلمة استاذ من فضلك

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

هذا الموضوع مغلق.

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