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

كيف يمكن الاتصال ببرامج ال Sockets على شبكة الانترنت

بدأه sameh mahmoud في 5 نوفمبر 2009 · 3 رد · 1,198 مشاهدة · في منتدى الشبكات العام
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكــم ورحمـة الله وبركاتــه

كيف يمكن ربط برنامجين client - server TCP / IP عبر شبكة الانترنت

لماذا هى تعمل فقط عبر الشبكة المحلية LAN فقط ؟؟؟؟ !!!

احاول عمل برنامج من هذا النوع بأستخدام رقم Real IP و قمت بعمل forward port لبورت معين فى ال router

و لكن للاسف لم يحدث اي اتصال !!!

هل يوجد خطوة اضافية بعد الخطوتين السابقتين ؟؟؟؟

ارجو ان تفيدوني

مع خالص الشكر

تم تعديل هذه المشاركة بواسطة sameh mahmoud في 5 نوفمبر 2009 في 00:10

سبـــــحــــان الله و بحمده سبحان الله العظيم

403100468.gif

#2

المشكلة تتمحور حول نقطة أن البرنامج موضوع في LAN وأن الراوتر لديك الذي يربطك بالإنترنت لا يقوم بتوجيه المطلوب إلى الجهاز

الـNAT أو بالأحرى PAT المفعل افتراضيا في الأجهزة المنزلية، كل ما تقوم به هو وضع entry في الnat translation table يتم انشاؤه فقط إلى خرج طلب من الداخل إلى الخارج.

لاحظ "من الداخل إلى الخارج". هذا الكلام سليم 100% مع الclient. بينما ليس مع الخادم. حيث أن الخادم يستقبل من الخارج إلى الداخل (اي العكس) بالتالي لا توجد entry حتى تقوم بالترجمة.

لذا لديك اختيارين:

- الأسهل: اذهب إلى الراوتر وقم بإعداد static PAT entry يدويا يشير إلى منفذ الخادم.

- الأصعب كبداية: قم بدعم upnp في برنامجك وإذا الخاصية مدعومة بالراوتر بالمنزل فممكن يفتح لك ديناميكيا.

استخدم الطريقة الأولى لانها لن تتطلب تغيير في برنامجك حاليا.

هناك نقطة أخرى تعتمد على البروتوكول الذي أنت صممته. هل معلومات عن البورت تتم تبادله في الـpayload في البكت؟

إذا كانت الإجابة نعم: هكذا ستحتاج deep inspection في الراوتر. أو يجب عليك تعديل البروتوكول لأنه تصميم غير جيد على الأرجح.

إذا كانت الإجابة لا: ممتاز. لا داعي لتغيير شيء في البرنامج، فقط static PAT يكفي.

ابحث في المنتدى عن static pat او nat وستجد العديد من المواضيع.

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

post-21836-1257612765.gif

before asking: smart questions how-to

#3

نحن جماعة الجافا دائما نتعبك يا سيد eech55 :lol:

تعقيب على سامح اريد ان اخبرك يا eech55 ان البرنامج هوا يعمل على UDP و TCP

سؤال قد طرحته كحل في الموضوع في قسم الجافا

الا يمكن ان نضع الأي بي الذي يصل بعد عملية الــNAT لا اضن انه هناك مشكلة

يعني بعد عملية ipconfig والاي بي الذي يضهر الا يصح الموضع

بالنسية لــ upnp لو كانت متوفرة كان هناك حل لكن المشروع يتطلب وضع IP يدوي في سورس البرنامج

لا ادري اذا كان هناك شئ بالجافا اجهله بالنسبة لهذا الموضوع :P

لكن اضن ان class Socket لا يدعم

والله اعلم

#4

شكرا على التعقيب شادو

المشكلة ليست أنه udp أو tcp. لكن بعض البروتوكولات تقوم بإخبار العميل بالـsession الجديد الذي سيفتح من أجله، ومن هنا تخبره الـport number أو الـip أو الإثنين وهو بداخل payload لذا الـNAT والراوترات الطبيعية لا تراه (مالم تتم استخدام خاصية deep inspection)

مثال على هذا هو بروتوكول SIP وأوراكل (يعتمد على الإعدادات)

هل هذا الشيء مطبق عندكم. إذا مش مطبق بالـNAT سيعمل بكل سعادة.

تم تعديل هذه المشاركة بواسطة eech55 في 6 نوفمبر 2009 في 14:33 — السبب: خطأ مطبعي. كنت مستعجل لأن البيتزا وصلت وقته&#

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

post-21836-1257612765.gif

before asking: smart questions how-to

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…