تلخيص للمشروع ككل
في حالة العمل بـ
Client/Server
يجب أن يكون الـServer على شبكة يمكن الدخول من خلالها إما باستخدام Real IP أو بالستخدام الـ Port Forwarding تقوم بعمله على الـ Router ويتم بناء الـ Port Number الذي ستسخدمه في برنامج الشات
في حالة العمل بـ
Peer-to-Peer
فلديك حلين اما ان تعمل
VPN Connection بين الجهازين بحيث تصبح وكأنك ضمن شبكته المحلية
او Port Forwarding في كلا الطرفين الأول والثاني وبناء على الـPorts التي حددتها
المشاكل
تمييز الاجهزة علي الشبكة حيث كا الاجهزة تعمل علي أي بي واحد حقيقي فكيف نفرق بينهم في الاتصال
فكرة عمل المسنجر
بدأ الموضوع بسؤال العضو q8-77 هل من الممكن الاستغناء عن السيرفر وجعل الشات يعمل على موقع خاص في الانترنت ؟
فكانت هناك اجابة من kindy_ibrahim وهي
من خلال قاعدة بيانات موجودة علي علي سيرفر سيتم بها تسجيل الثوابت والمتغيرات بالبرنامج
http://www.image-share.net/image/15278/Untitled-1.jpg
user & pass طبعا هما عرفين شغلهم كويس
state الحالة هي اونلين لو القيمة بتاعتها بواحد اوفلين لو القيمة بتاعتها بصفر
ip معروف طبعا المفروض البرنامج يكشف عنه قبل ما يظهر اونلين
port ده يكتب فيه رقم البورت الافتراضي للبرنامج وطبعا هنحاول نشوف بورت محدش بيستخدمة ده عشان Winsock
وده فكرة الاكتيف ديركتوري
وقال العضو msayed2004
انت محتاج IP للـ Server يخزن بالـ Clients علشان يتصلوا بيه و المفروض أنه يكون ثابت.
لو أنت هتحجز Server للشات يبقى ممكن تتطلب IP ثابت , أما لو جهازك فأعتقد أن برنامج No IP هيقوم بالمطلوب.
و ممكن تخللى الـ Clients تنزل ملف نصى من النت فيه الـ IP بتاع الـ Server كل مرة تشتغل و أنت بدورك تحدث الملف بأستمرار و تحط الملف على أى موقع أستضافة مجانى يسمح بالـ Remote Linking.
و أعتقد برده أنهم بقسم الشبكات هيفيدوك أكتر منى.
واضاف العضو abc_amjad
احب اقول معلومة يمكن انتو عارفينها: يمكن عمل برنامج سيرفر وكلاينت وإنشاء اتصال بينهما باستخدام آي بي السيرفر ولا حاجة لمعرفة آي بي الكلاينت
واوضح العضو Xpert2005 مشكلة هامة وهي
لو كان فيه اثنين متصلين بالسرفر وراء روتر او حتى سويتش فالايبي للاثنين راح يكون واحد كيف راح يتصل حد من الخارج باثنين عندهم نفس الايبي
واقترح ايضا استخدام المكتبة Direct Play
ورد العضو kindy_ibrahim
الـ Direct Play عبارة عن مكتبة مرفقة مع DirecX وهي تقوم
بنفل الالعاب عبر الشبكة وليست مخصصة للصوت
يوجد بها الكثير من المشاكل واكبر دليي ميكروسوفت تحدث الديركت اكس بسببها
كما قالت ميكروسوفت عن الاداة
This release of DirectX is not recommended for general installation. You should only consider installing this release if you have an online gaming problem that has been identified as being fixed with DirectX 8.2
اوضح ايضا انه يمكن بالتغلب علي هذه المشكلة الشرح بالصورة
http://www.image-share.net/image/15278/Untitled-12.jpg
واكد العضو DreamNet علي المشكلة مرة اخري
في البداية أقول ان المشكل الذي قد يواجهنا هنا هو ارسال الصوت والكاميرا لانها تستدعي اتصال peer to peer
ومثل هذا الاتصال قد يمر بمشاكل الايبي الحقيقي للجهاز خاصة وراء الروتر طبعا عملية الip forwarding ليست آلية
بالنسبة لعدم الاعتماد على الديركت بلاي كثيرا وذلك طبعا حسب وجهة نظري في الأول والأخير أنها مكتبة ليست مفتوحة المصدر يعني تعيق المبرمج في بعض الأحيان وفي كثير من الجوانب وكذلك اعتمادها بالدرجة الأولى على بروتوكول UDP في حين أن استخدام الTCP أفضل ويعطي نتائج أحسن دائما
وقد اوضح kindy_ibrahim
بالنسبة للمشكلة الاولي
فمن خلال بحثي وجدت حلين وهما
لأول : عمل VPN Connection بين الجهازين بحيث تصبح وكأنك ضمن شبكته المحلية
او كما قال العضو دريم نت عمل الـPort Forwarding في كلا الطرفين الأول والثاني وبناء على الـPorts التي حددتها
وبالنسبة لـ Direct Play
احب ان اوضح الفرق في استخدام كل بروتوكول
اولاً TCP
هو بروتوكول الاكثر استخداماً حيث انه يضمن لك وصول البيانات وفق ترتيب المحدد له ولكن تعيبه انه بطئ نسبياً
ثانيا UDP
بروتوكول ينقل الملفات بسرعة عالية جداً ولكن غير مسؤل عن وصول البيانات طبقاً للترتيب المحدد لها
وجاء تعليق MSVS في احد المواضيع
عموماً المسألة ليست خاصة بالماسنجر أو الشات على الـ WAN .
الموضوع يتعلق بالـ Network Address Translation – NAT
واعطانا حريف برمجة فكرة خاصة
كلنا الان نعرف ان لتثبيت اتصال نقل البيانات فى بروتوكول Ftp يتم ام بطريقتين Passive او normal
فى الطريقة Passive تجعل السيرفر ينتظرك على احد المنافذ عنده وتقوم انت بالاتصال به وهذة ليس بها مشاكل اما العادية ان تقوم انت بانتظار الخادم على احد المنافز وهو سيتصل بك
حين ذكر آخر
نقوم بعمل التميز من خلال ربط الاي بي مع اسم الكمبيوتر

