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

برمجة winsock الدرس #3

بدأه the inventor habib في 24 يوليو 2012 · 1 رد · 1,380 مشاهدة · في لغة Assembly لأنظمة 16, 32, 64 بت
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

تحديد نمط عمل Socket:

بعد أن أنشئنا Socket علينا الأن تحديد نمط عمله اما Blocking Mode أو None-Blocking وأتناء انشاء socket فالنمط الأفتراضي الدي سيعمل عليه هو Blockingولتحديد أي نمط تريد نستعمل الدالة WSAAsyncSelect أو setsockopt وأنا سأشرح الدالة WSAAsyncSelect الخاصة بالويندوز.

هده الدالة تأخد Syntax التالي:

WSAAsyncSelect PROTO socket:DWORD, hwnd:DWORD, msg:DWORD, Event:DWORD

البرامترات:

socket: مقبض socket الدي أنشئناه من قبل.

hwnd:مقبض النافدة التي سوف ترسل لها الرسائل أو الأحدات كحدت غلق النافدة WM_CLOSE...

msg:يمتل عنوان أو رقما معين من اختيارك لكي تبين أي رسالة خاصة بك وهدا شبيه برسالةWM_COMMAND حيت بداخل هدا الحدت يمكنك عمل أشياء أخري اجراء أحدات أخري.

Event:يمتل نوع الأحدات التي سوف تستقبلها وهناك عدة أحدات من بينها:

FD_READ :لكي تجعل برنامج يرسل لك حدت القرائة أو استقبال البينات (recv).

FD_WRITE :لكي تجعل برنامج يرسل لك حدت ارسال البينات حين يحين وقته (send).

FD_ACCEPT : لكي يرسل البرنامج حدت استقبال الاتصالات حين يأتي اتصالincoming connections

FD_CONNECT:لكي يرسل حدت بدأ الاتصال حين يحن وقت الأتصال.

القيمة المرجعة من الدالة:

ادا نجح الاستدعاء ترجع القيمة NULL أما ادا فشلت ترجع قيمة SOCKET_ERROR ويمكنك استعمال الدلة WSAGetLastError لمعرفة نوع الخطأ.

ملاحضات:

عندما يحين وقت حدت معين تقوم مكتبات winsock بارسال رسالة الي البرنامج . وليعرف البرنامج نوع الحدت:

الكملة العليا high word في البرامتر lParam يوجد بها رقم الخطأ فقط ادا حدت خطا ادا لم يحدت تحمل 0.اما في الكلمة الدنيا فتحمل نوع الحدت FD_CONNECT...أما البرماتر wParam فيحمل socket descriptor أو مقبض السوكت الدي ستصل أو سيستقبل الاتصالات.

تريد الغاء ارسال رسائل الخصة بsocket عليك استدعاء الدالة WSAAsyncSelect مرة أخي مع وضع 0 في البرامتر الأخير الخاص بالأحدات Event.

لاحض الصورة:

الصورة في المرفقات

لتحميل الموضوع علي شكل كتاب BDF المرجو الضغط هنا:

http://www.4shared.c.../___online.html

نلتقي في الدرس المقبل ان شاء الله.

post-264970-056285200 1343155859_thumb.j

المرفقات
image00.jpg
#2

تستعمل الدالة WSAAsyncSelect لتحديد النافذة التي نريدها أن تستقبل من الـSocket الرسائل التي قمنا باختيارها و ذلك لغرض معالجتها. ليست تستعمل لتغيير نمط عمل الـSocket :wacko:

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