شاهدت مواضيع كثيرة لفتح سيرفر باستخدام Socket الا ان جميع الامثله يتم تجريبها على نفس الحاسوب..اعتقد ان المشكة في الPort Forwarding لا اعلم شيء في هذا المجال هل يمكن لاحد ان يعطيني رابط او مساعدة كيف يمكن ذلك على شبكة الانترنت وليس المحليه (ملاحظه : انا لا افهم شيء في Network) وشكراً جميعا
مشكور على ردك قرأت(plain Sockets) لم اجد الجواب الذي ابحث عنه .. قد تكون صيغه السؤال او(الموضوع) لا توصل للهدف المطلوب و بصيغه اخرى ماذا يجب علي ان افعله لتحويل مثل هذا (يرسل و يستقبل من نفس الكمبيوتر) http://codetechnic.blogspot.com/2009/02/receiving-large-files-over-tcpip-in-c.html الى كمبيوتر الى اخر (في دوله اخرى مثلاً طبعا باستخدام internet ) ؟
هذا يعتمد على الهدف من المشروع. إذا كنت تريد حل المشكلة على نطاق صغير، بمعنى أن السيرفر هو جهازك وتحت تصرفك وستخدم عدد محدود من المستخدمين فى نفس الوقت، فالحل الأبسط هو إضافة قاعدة جديدة للراوتر الخاص بالجهاز المستقبل للإتصال (السيرفر). لو كان عندك مودم فقط وليس راوتر، بمعنى أنه لا يستطيع أن يوصل أكثر من جهاز للإنترنت فى نفس الوقت، فلا أظنك بحاجه لعمل أى شئ. فقط شغل برنامج السيرفر على جهازك وأتصل به من الآخر. إذا كان عندك راوتر فأدخل على عنوان الراوتر من المتصفح. غالباً ما سيكون: 192.168.0.1 أو 192.168.1.1 أدخل إسم المستخدم وكلمة السر، غالباً ما سيكونوا admin admin إذهب إلى الخصائص المتقدمة وأبحث عن NAT أو Virtual Server أو Port Mapping مكانها يختلف من راوتر إلى راوتر، فأبحث عن مكانها فى جهازك. من هناك، أدخل قاعدة جديدة. أكتب رقم البورت (9050 فى برنامجك المرفق) وعنوان الجهاز الذى سيستقبله (العنوان المحلى أو الداخلى. غالباً ما سيبدأ بـ 192.168 أو 10.0) وأحفظ التغييرات. يستحسن أن يكون الجهاز الذى سيتقبل الإتصال له عنوان ثابت كى لا تضطر إلى تغيير القاعدة فيما بعد.
فى برنامج المتصل (الكلينت)، بدل العنوان المكتوب بعنوان السيرفر الخارجى (وهذا يختلف عن عنوانه فى الشبكة الداخلية - شبكة المنزل). لمعرفة عنوان السيرفر ، أدخل على http://www.whatismyip.com/ من على السيرفر. الآن بإمكانك توصيل الجهازين.
ضع فى إعتبارك أن عنوان السيرفر الخارجى قد يتغيير هو الآخر. بإمكانك تثبيته بالإتصال بمزود الخدمة، أو قم بإستخدام dyndns.com أو خدمة مشابهة (يبدو أن dyndns.com لم تعد تعطى حلولاً مجانية)
هنالك عدة مستويات من الحماية او الحواجز التي تقف بينك وبين عالم الانترنت الخارجي، بعض الحواجز هذه قد تكون في نظام التشغيل لديك (الجدار الناري مثلاً) او جهاز الراوتر لديك (بشكل اعتيادي يسمح بمرور البيانات للمنافذ القياسية فقط) وكذلك هنالك NAT والتي تقوم باعطائك عنوان IP لشبكتك الداخلية (مثل 168.0.0.2) لتفصلك وجميع الاجهزة المتصلة لديك عن الشبكة الخارجية المتمثلة بـ IP واحد الحقيقي.. اضافة الى مشكلة ان ال IP الذي تحصل عليه في العادة يكون Dynamic اي كل مرة يجري الاتصال قد تحصل على IP مختلف تماماً، ولكي تكتمل الكعكة فإن معظم مزودي خدمات الانترنت يقومون بحجب مديات معينة من المنافذ... لكل من هذه المشاكل حلول بالطبع ولكن ليس هنالك حل عملي غير الحصول على اتصال مباشر للانترنت باستخدام IP ثابت بعيد عن جدران الحماية المتعددة، وهذا ما تتمتع به الخوادم التي تقدم الخدمات بكافة اشكالها وهي كما تعلم بلا شك تكلف مبالغ لا يستهان بها للتأجير أو الشراء.
كمطورين فالمشكلة الرئيسية لدينا تكمن في اننا تستطيع ان نتصل بأي IP خارجي بشكل مباشر ونتبادل البيانات معه ما دام الاتصال قد بدأ من جهتنا (وهذا ما يحصل كل مرة عندما تكتب عنوان انترنت في خانة العنوان وتضغط الادخال وكذلك كل مرة تلعب لعبة متعددة اللاعبين على الانترنت) ولكن لا يمكن ان يتصل بنا احد من الخارج بشكل مباشر بنفس الطريقة، لأن الطريق مليئة بالحواجز والعناوين البديلة.
اذن فما الحل؟ كل ما نحتاجه هو خادم يمكنه ان يتلقى اتصال من اي جهة بشكل مباشر وبدون حواجز نقوم بتشغيل خادم لعبتنا عليه بطريقة ما، يمكنك ان تستخدم خادم انترنت اعتيادي مثل PHP/MySQL لكن في هذه الحالة ستقتصر عملياتك على طلبات وردود HTTP وهي بطيئة ولا يمكن عملياً استخدامها للالعاب المتعددة اللاعبين التي تعمل في الزمن الحقيقي ولكن قد يمكن استخدامها في الالعاب الاجتماعية البسيطة او خدمات المحادثة وما الى ذلك. لحسن الحظ لدينا ايضاً انظمة الـ Cloud computing والتي تقدم قوة اكبر وقدرة يمكن باستخدامها انشاء انظمة افضل وكل حسب تقنيته، من الرائع هذه الايام توفر هذه الخدمات بشكل مجاني محدود لكن حدوده كافية بالنسبة للمشاريع الصغيرة، على سبيل المثال هنالك Heroku و Google AppEngine. اما افضل الحلول فهي تلك الموجهة تحديداً للالعاب، ومن الرائع ايضاً توفرها بشكل مجاني وبحدود معقولة هذه الايام، هذه الحلول توفر امكانات رائعة عالية المستوى مثل قواعد البيانات، نظام مستخدمين، نظام لتنظيم غرف اللعب (player matching) الاتصال مع فيسبوك الخ واستخدم1 شخصياً Player.io وهنالك آخرين.