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

Winsock API Tutorial

بدأه Pharaonic_Guy في 15 مارس 2005 · 41 رد · 18,072 مشاهدة · في قسم الدروس والمواضيع الهامة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

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

مرفق الجزء الأول داخل موضوع برمجة تطبيقات الشبكات بالأخص تطبيقات Client/Server

الموضوع أتوقع أنه يكون في 5 أجزاء سيكونوا كالتالي:

الجزء الأول - التعرف علي مكتبة Windows Sockets.

الجزء الثاني- درس حول أنشاء وأغلاق المقبس Socket.

الجزء الثالث- موضوع حول ألقاء خطاف لرسائل المقبسHook وعمل تصنيف فرعي لتلك الرسائلSubClass .

الجزء الرابع-برمجة برنامج الخادم.

الجزء الخامس-برمجة العميل.

وسأختم الموضوع بشرح لكيفية إرسال بريد الكتروني بدوال Winsock Api وكيفية مخاطبة سيرفر بريد ما بروتوكول SMTP .

تم ضغط المرفقات ببرنامج Winrar.

Winsock_API_tutorial_Part_1.zip

تم تعديل هذه المشاركة بواسطة Pharaonic_Guy في 15 مارس 2005 في 15:56

#2

السلام عليكم

"Pharaonic_Guy"

اهلا بك و مشكور ياغالي , بارك الله

gaza3-3.jpg
#3

الله يعطيك العافية ومشكور

#4

أهلاً بك أخي محمد في المنتدى ..

وشكراً لك على هذه الإضافة المميزة ..

ani.gif
#5

شكرا أخواني علي المرور الطيب..

#6

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

كيفية انشاء واغلاق مقبس Socket

موضوع سريع ولا يأخذ سوي أقل من 5 دقائق دراسة وتطبيق.

Winsock_API_Tutorial_Part_II.zip

تم تعديل هذه المشاركة بواسطة Pharaonic_Guy في 16 مارس 2005 في 12:36

1
#7

موضوع مهم و جميل

بارك الله فيك اخي

وثق بي اخي لن تندم لانك اشتركت في هذا المنتدى

من دروسي :

درس مبسط لفهم ال VB6.... Resource File

تعلم تصميم اداة ال Active X خطوة بخطوة (الجزء الأول)

الطريقة المثلى للتعامل مع مسجل النظام( VB6..... (Registry

من برامجي :

Abo Sabreen Messenger v2.1 العملاق

--------------------------------------------------

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

#8

ممتاز بس ياليت تكمل وخصوصا موضوع ارسال بريد الكتروني بالاعتماد على API

#9

السلام عليكم

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

و ان شاء الله نحن من المتابعين للموضوع

مع تحياتي

م.فادي كلثوم

#10

شكرا أخواني علي المرور الطيب..

#11

السلام عليكم

الجزء الثالث

مرفق موضوع إنشاء خطاف للرسائل وعمل تصنيف فرعي لها ..

مدة القراءة والتطبيق ما بين 10 إلي 20 دقيقة.

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

سيفيدنا هذا الموضوع في الأتي :

-لاحظ أنني لم أكتب ماذا سنستفيد من هذا الموضوع في الملف المرفق-

*أولا دالة Listen والتي سنستخدمها في السيرفر لكي نقوم بانتظار اتصال بالسيرفر من العميل تدخل في حالة Blocking للمقبس Socket حتي يتم الاتصال ونوافق عليه بدالة Accept فتعمل Raise Event للمقبس..

في أثناء ال Blocking Socket سيدخل المشروع بأكمله في حالة ال Blocking.

عن طريق عمل خطاف للرسائل Hook التي ستصل إلي نافذة Hwnd نحددها في برنامجنا نستطيع معرفة جميع الأحداث التي تصل إلي برنامجنا ومنها أحداث المقبس ونستطيع بالتالي التحكم بتلك الأحداث بدون الدخول بالمقبس لحالة ال Blocking .-- هذا الموضوع سنتناوله وتفهمه بالتفصيل عندما نصمم الخادم Server --

*ثانيا حتي نستطيع بناء برامج Client/Server قوية..لابد من دراسة هذا الموضوع المرفق..لإن معظم البرامج تقوم تقوم بإنشار أكثر من مقبس,كل واحد وله أستخدام فمثلا سننشا مقبس ليقوم بعمل اتصال بالخادم وتبادل بيانات معينة,ننشا مقبس أخر لنقوم بنقل الملفات عبره وهكذا..

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

ولتفادي ذلك ..سنقوم بإنشاء أكثر من مقبس ..وكل مقبس سنقوم بعمل Hook له عن طريق نافذة أو أي عنصر له مقبض Hwnd ..حتي نقوم بتمريره لدالة SetWindowLong ... ونعمل تصنيف فرعي لكل نافذة معمول لها Hook وبالتالي سنتقبل أي احداث توصل لتلك النافذة ومنها أحداث المقبس الخاص بتلك النافذة --وسنري ذللك بالتفصيل أيضا لما ندخل في الشغل الفعلي--

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

Hooks___SubClassing.zip

#12

شكرا للأخ Pharaonic_Guy على الموضوع

ولكن الكتب مكتوبة word

وأنا لم ولن أنصب الأوفيس على جهازي

لذلك لا أعلم إن كان سؤالي هذا موجود في هذه الملفات أم لا وهو

أريد دوال api بدلا من إستخدام الأداه mswinsock.ocx أتمني أن تكون أكواد بسيطة (غير مكتوبة بالوورد)

على الأقل أكواد server

أنتظر الرد

سلااااااااااااااااااااااااااااااام

#13

اولا: نرحب بك عضو جديد في هذا المنتدي العظيم

ثانيا : نشكرك كثيرا علي هذه البدايه الجميله والرائعه

بسم الله الرحمن الرحيم

{وقل اعملوا فسيرى الله عملكم ورسوله والمؤمنون}

صدق الله العظيم

#14

حياك الله يا Pharaonic_Guy

نحن طالبوا مساعدة

عاملين مشروع يتمثل في استلام باكت من انترفيس (مثلا 192.168.0.1) ويرسله من انترفيس ثاني (مثلا 192.168.0.2) على نفس الجهاز، ونريد من الجهاز الذي تدور عليه هذه العملية أن يعمل فورورد للباكت كما هو أي بدون تغيير عنوان المرسل الأصلي!!!!!!

ممكن مساعدتك

شكراً

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

حبيب وافيتُ من صنعاء يحملني ----- نسرٌ وخلف ضلوعي يلهث العربُ

ماذا أحدث عن صــــنعاء يا أبتِ ----- مليحةٌ عاشقاها السل والجربُ

ثمانون ألفاً لعمورية اتقدوا ----- وللمنجم قالوا إننا الشـــــــــهبُ

واليوم سبعون ملـيوناً ومابلـغوا ----- نضجاً وقد عُصر الزيتون والعنبُ

#15

جزاك الله كل خير موضوعات فعلان رائعة

#16

سؤال عن عملية ال hook

إذا كان عندي أكثر من نافذة في البرنامج كيف أعرف إلى أية نافذة تصل رسائل النظام كي أحول الرسائل منها إلى الإجراء الفرعي؟

مثلا بمقبسين وينسوك في البرنامج كيف أعرف إلى أي منهما تنتمي رسالة وصلت من النظام بقبول الاتصال؟

هل ينبغي أن أربط كل مقبس بنافذة وكيف يتم هذا الربط؟

ماذا لو أردت إنشاء عدد من المقابس، ونافذة واحدة للبرنامج؟

#17

اخى / Pharaonic_Guy

دروس ممتازة

وفقك الله

1- لا خير في حسن الجسوم وطولها إن لم يزن حسن الجسوم عقول

2- لا تنظر إلى صغر الخطيئة .. ولكن انظر إلى عظم من عصيت

3- قد يجمع المال غير آكله . . ويأكل المال غير من جمعه

4- من وثق بالله أغناه ومن توكل عليه كفاه ومن خافه قلت مخافته ومن عرفه تمت معرفته

5- أن تضيء شمعة صغيرة خير لك من أن تنفق عمرك تلعن الظلام

6- لا يحزنك إنك فشلت مادمت تحاول الوقوف على قدميك من جديد

7- صديقك من يصارحك بأخطائك لا من يجملها ليكسب رضاءك

8 - الابتسامة كلمة طيبة بغير حروف

9- لا داعى للخوف من صوت الرصاص .. فالرصاصة التى تقتلك لن تسمع صوتها

10 -- يستطيع الناس أن يعيشوا بلا هواء بضع دقائق وبلا ماء أسبوعين وبلا

طعام حوالى شهرين وبلا أفكار سنوات لا حصر لها

من مواضيعى :

--------------

دروس تعلم كيف تصحح أخطائك بنفسك

برنامج الحائط النارى العربى ---- جديد

برنامج ساعة بالعقارب ------ جديد

لعبة سناك الشهيرة مع الكود

غير نظرتك لل picturebox وانظر ماذا فعلت بها

حمل ملف فلاش على الفورم بكل سهولة

مكتبة تحتوى على 50000 كتاب مجانى معظمها عن الكمبيوتر و البرمجة

برنامج المترجم العربى لترجمة الافلام

#18

السلام عليكم

أسف جدا علي التأخير وذلك لظروف سيئة جداااا...

أولا أعذرني أخي "عبدالله سلام" علي عدم الرد الآن حتي أقوم بدراسة سؤالك جيدا...

الأخ "e-asm" سؤالك جميل جدااااااااااااااا

وأعذرني لو لم أستطع التحدث معك في هذا الموضوع بأستضافة الآن ,,لكن سأعوضك بمشروع كنت عامله كتجربة لبرنامج هاك يسمح بتعدد المقابسMulti Sockets وكل مقبس له نافذة Hwnd وعامل لكل مقبس تصنيف فرعي

البرنامج تجربة لمقبسين فقط ..مقبس رئيسي ومقبس للشات,ويمكن تطبيق نفس الفكرة علي أي مقابس أخري..

المهم أن تأخذ بالك من الدالة WSAAsyncSelect لأنها جواب لسؤالك, فعن طريق معاملات تلك الدالة تستطيع أن تحدد مقبض النافذة Hwnd التي ستسقبل أحداث أي مقبس تحدده, فالمعامل الأول يوضح المقبس الذي تريد أستقبال أحداثه والمعامل الثاني , مقبض النافذة Hwnd التي ستسقبل تلك الأحداث, وتلك النافذة أصلا معمول عليها Hook لتصنيف فرعي .... وهكذا مع أي مقبس أخر...

والمشروع المرفق سيفسر لك الكثير ...

وأعذروني مرة أخري يا أخوان, وسأحاول أن أضع بقية الدروس الغد بإذن الله ...

Create Multi Sockets.zip

#19

الله يعطيكم العافيه

www.zadtech.com

#20

السلام عليكم

الجزء الرابع والخامس

مرفق الجزء الرابع والخامس , الرابع يختص ببرمجة الخادم Server والخامس يختص ببرمجة العميل..

الأجزاء القادمة ستكون لكيفية برمجة تعدد العملاء Multi Clients علي خادم واحد وباستخدام مقبس واحد ومنفذ واحد فقط , لأستخدامها في برمجة Net Cafe Controller, وأيضا ستكون لكيفية إرسال بريد الكتروني بكل سهولة بدوال Winsock API ..

Winsock API Tutorial Part 4&5.zip

#21

مشكووور أخى Pharaonic_Guy على الدروس

دروس رائعه حقاً

#23

شكرا للأخ Pharaonic_Guy عل هذه المشاركات الفعالة وفقك الله للمزيد

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

فأرجو ممن لديه الخبرة فى هذه الجزئية المشاركة

وشكرا مرة اخرى للأستاذ Pharaonic_Guy

كن كالنخيل عن الأحقاد مرتفعا .. يرمى بصخر فيرمى أطيب الثمر

#24

صحيح أن المنتدى يحوي أكثر المبدعين العرب

تسلم يداك وأن شالله إلى تألق مستمر في مسيرتك العلمية

اخ Pharaonic_Guy

تحياتي

سجل ايميلك هنا

googlejb5.gif ليصلك كل ما هو مفيد في عالم البرمجة
#25

السلام عليكم

أخي Pharaonic_Guy أنا عثرت على هذه الدورة مؤخراً وأتمنى أن تراجع رابط الملف الموضوع في الدرس الثالث لإنه لا يعمل حتى يتسنى لي متابعتك في باقي دروسك القيمة وشكرا

تزودوا فأن خيرا الزاد التقوى

اللهم انصر اخواننا المسلمين المجاهدين في كل مكان

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