السلام عليكم.
أعتذر عن التأخر عن الرد بسبب انشغالي بعض الشيء.
المشكلة في آخر شيفرة كتبتها هي أنك في التابع OnReceive قمت بتعريف متحول من نوع CSock جديد و كان يجب أن تستخدم نفس المتحول الذي عرفته من قبل و الذي أنت موجود في سياقه و بالتالي تصبح الشيفرة كالتالي :
[code2]
void CSock::OnReceive(int nErrorCode)
{
Send("Nick DR-A_TEST_1nuser asd asd asd asdnJoin #GgGgGgn",100);
CSocket::OnReceive(nErrorCode);
}
[/code2]
طبعاً يجب أن يكون هناك برنامج سيرفر يقوم بقبول عملية الاتصال و ارسال معلومة إلى ال Client حتى يتم استدعاء OnReceive .
و لتوضيح فكرة استخدام CSocket عن طريق MFC قمت ببناء برنامجين بسيطين يمثلان عملية ال Chat بين الطرف الأول و هو ال Server و الطرف الثاني و هو ال Client و المشروع للبرنامجين موجود في الوصلة التالية:
http://arabteam.nicmatic.com/atassi/CSocket.zip
وأود شكر الأخ هاني الأتاسي على مساعدته في تجريب البرنامج معي عن طريق الانترنيت



ملاحظة : ( طبعاً يمكن تجربة البرنامجين على نفس الجهاز و عندها يجب استخدام العنوان المحلي و هو 127.0.0.1 )
تسلسل تشغيل البرنامجين:
[list]
[*] نشغل برنامج ال Server و نحدد ال Port الذي نريد استخدامه و ثم نضغط على Create فيتم إنشاء ال Socket و يتم وضع ال Server في وضع الاستماع لأي محاولة اتصال على ال Port المحدد.
[*] نشغل برنامج ال Client و نضغط على Create لإنشاء ال Socket و طبعاً هنا لا نستخدم Port من أجل إنشاء ال Socket الخاص بال Client
[*] في برنامج ال Client نحدد عنوان ال Server و رقم ال Port الذي نريد الاتصال عليه ومن ثم نضغط على Connect .
[*] إذا كانت الأمور تسير على مايرام فستظهر رسالة في برنامج ال Server تشير إلى أنه تم قبول الاتصال من Client و يتم طباعة عنوان و رقم منفذ ال Client و تظهر رسالة في برنامج ال Client تشير إلى أن ال Server قد قبل الاتصال.
[*] لآن البرنامجين جاهزين لتبادل البيانات فيما بينهما و طبعأنكتب النص ثم نضغط على Send فيتم ارسال الرسالة إلى الطرف الآخر وطباعتها في كلا البرنامجين.
[*] يمكن في أي لحظة الضغط على Close من أجل إنهاء الاتصال.
وهذه لقطة من البرنامجين أثناء التشغيل:
هذا شرح عام عن كيفية تشغيل البرنامج أما عن شيفرة البرنامجين فأنا جاهز لأي استفسار.
مع التحيات.