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

ماهي الطريق الصحيحه لعمل Threading server with GUI

مغلق
بدأه زائر في 3 يناير 2007 · 16 رد · 1,470 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

أعمل على مشروع White Board server الطريقه كالتالي :

هناك سيرفر وهناك أكثر من client كل كلاينت بإمكانه أن يرسم مستطيل أو مربع أو خط

عندما يرسم فإنها تظهر عند بقية الكلاينت .

المشكله هي أنني فكرت بأن اخذ صوره للـApplet عند كل كلاينت Thousands of pixels وارسلها في الSocket للسيرفر الذي يتولى بدوره ارسالها لجميع الكلاينت الموجودين حالياً

لكني قرأت وتفحصت في هذا الخيار وجدته not efficient

لذلك أريد الطريقه الصحيحه لعمل Graphic board shared بين أكثر من كلاينت ،

وجدت طريقه وهي إرسال مسج مفادها مثلاً : الكلاينت 1 رسم مستطيل في النقطه 50و50 بطول 10 وعرض 30 مثلاً

ولكن لم أفهم كيف يتم تحويلها إلى رسم حقيقي في الBoard

اتمنى المشاركه ولو بأقل معلومه أو رابط أو أي شئ

شكراً لكم مقدماً

#2

هل جربت multicastSocket?

فحنوت ألثم جرحه الرعافَ فانتكأت جراحي..

وهمت على خدي الدموع فقلت يا روحي وراحي..

هلّا رحمتَ قلوبنا .. وعدلت عن هذا الرّواحِ ِ ..؟

فأجابني البطل المسجّى هازئاً بيَ .. باقتراحي

كفكف دموعك ليس في عبراتك الحرّى ارتياحي

هذي سبيلي .. إن صدقت محبتي .. فاحمل سلاحي

Sun Certified Java Programmer

#3

لأ ، هل بامكانك تخبرني مافائدته ؟

#4

أخي أياد بحثت عن MulticastSocket لاتفيدني في مشكلتي لأنني أقيم أتصال TCP وليس UDP

شكراً لك ، ولكن بوجهة نظرك لو كان الاتصال UDP ماذا تتخيل تكون الفائده ؟

#5

عفواً .. يبدو أنني لم أفهم بالضبط ما أردت .. أنت لا تريد آلية لإيصال التغييرات، وإنما لمعرفة التغيرات وكيف ستنفذها عند بقية الـ clients ..

على كل MulticastSocket لم أعمل بها .. لكنها بسيطة اللب فيها أنها تعتمد على رقم Multicast IP وهو رقم من class D في ترقيم الـIP يبدأ من 224.0.0.0 على ما أظن!!

المهم في المرفقات مثال بسيط عنه أتمنى أن تستفيد منه.. عند التنفيذ مرر كـ args لتطبيق السيرفر رقم الـmulticast ip ورقم الـ port

ملاحظة .. حتى يحصل جهازك على رقم multicast IP فقط ضع كبل شبكة حتى وإن لم يكن هناك أجهزة متصلة .. ثم في cmd للتأكد اكتب الأمر route print سيظهر لك رقم multicast IP ..

msendr.rar

فحنوت ألثم جرحه الرعافَ فانتكأت جراحي..

وهمت على خدي الدموع فقلت يا روحي وراحي..

هلّا رحمتَ قلوبنا .. وعدلت عن هذا الرّواحِ ِ ..؟

فأجابني البطل المسجّى هازئاً بيَ .. باقتراحي

كفكف دموعك ليس في عبراتك الحرّى ارتياحي

هذي سبيلي .. إن صدقت محبتي .. فاحمل سلاحي

Sun Certified Java Programmer

#6

أرسل Shape .

بعد أن يرسم العميل Shape أرسلها كما هي.

#7

قد تفيدك تقنية RMI

Remote Method Invocation

سيمضي ركبنا العملاق لن يركع .. بإيمان لغير الحق لا يصدع

عزيزا شامخا كالمجد بل أروع .. فسجل أيها التاريخ ما تسمع :

فلسطين لنا الآمال والمطمع .. نعاهد أن نحررها وأن ترجع

ونقسم نستعيد الأرض أو نصرع .. ويبقى رمزنا الزيتون والمدفع

Palestine.gif

#8

كيف؟؟؟ أتوقع أنها ستعقد الأمر!!

كما قال الأستاذ أبو مازن .. أن يرسل object Shape باستخدام Socket .. أتوقع أنها أبسط

فحنوت ألثم جرحه الرعافَ فانتكأت جراحي..

وهمت على خدي الدموع فقلت يا روحي وراحي..

هلّا رحمتَ قلوبنا .. وعدلت عن هذا الرّواحِ ِ ..؟

فأجابني البطل المسجّى هازئاً بيَ .. باقتراحي

كفكف دموعك ليس في عبراتك الحرّى ارتياحي

هذي سبيلي .. إن صدقت محبتي .. فاحمل سلاحي

Sun Certified Java Programmer

#9

شكراً لكم

ولكن ابو مازن في برنامجي لاأعتقد ان shape يفي بالغرض لأنه abstract ولايحتوي على المثد paintComponent

لدي كلاس canvas يحتوي على arraylist of shapes وفيه جميع الlisteners الخاصه بالابلت

الآن لو ارسلت canvas ستبقى مسألة كيف يعالج السيرفر هذا التغيير ، وسوف أحتاج إلى مسج بأنه الكلاينت الاول رسم مستطيل في النقطه كذا وكذا !! أو عمل drag وفي الكلاينت يعالجها الكلاينت (داله تقوم بمعالجتها وتغيير الcanvas حسب ماقام به المستخدم ) هل هذا هو الصحيح ؟

شكراً مقدماً

ناردين كلامك صحيح ، بالتأكيد تفيدني ولكني لاأريد ان استخدمها في مشروعي نظراً لأنها تحتاج Utilities مثل RMI registry and compiler for stubs

ومشروعي ليس بالحجم الكبير لتنفيذها

شكراً اختي

#10

كيف سترسم الأشكال؟

أعتقد أنك ستستخدم graphics.draw(shape)

ولن تحتاج إلى paintComponent!

بالتوفيق!

#11

شكراً ابو مازن ، فعلاً دالة draw abstract وارسم فيها لكن ماذا عن عملية الdragging والشئ الآخر

حاولت ارسل Object ولكن يهنق أو يعلق الزر Connect المشكله أنه لايوجد thread حالي حتى نقول أنه يجب مناداة event dispatch thread الثريد موجود في السيرفر وحتى قبل ماأعمل تعديل على الابلت يهنق ، والله عجزني

طالبك مواصل من امس ومره يرسل أوبجكت Serialized Object ومره يرسل String وشكلي بالأخير بنام واترك الدكتور :(

#12

هل هذا أول مشروع اتصال تقوم بعمله؟

إذا كان أول واحد وتواجه مشكلة تعدد الاتصالات وتعدد المهام. أنصحك باستخدام RMI.

بالمناسبة، بعد إصدار جافا 5، ليس بالضرورة استخدام rmic، يمكنك عمل ما يلزم بسهولة.

#13

شكراً لك ابو مازن

الحمدلله حليت المشكله وسلمت المشروع ، وهذا أول مشروع أقوم به ( في الجامعه ) ، لكني كنت في الماضي أرى اكواد كثيره socket على الmessages وفعلت بعضها

وعندما اتاني المشروع قلت لاأريده ارسال مسج ، فقط كنت ابحث عن الحلول المتعدده للمشكله ، وإلا حل المسج موجود لدي من اسبوع ، ولكني أردت ان اجرب Serialized Object خاصة انه مع Swing ،

بالنسبه للـRMI & CORBA وال Middleware بشكل عام ، ياليت لو تعطينا انطباعك عنها وفكرتك فيها ،

وماهي انطباعات الشركات أو المؤسسات عنها وماهو المستحب من خلال خبرتك ، أتمنى أرى موضوع تشرح فيه نظرتك لهذه التقنيات ، ويكون موضوع قابل للأخذ والرد

شكراً لك استاذي ابو مازن .

#14

ضع مشروعك هنا.. إذا كان لا يمنع.

#15

أرحب ( وبقوه ) بملاحظاتك ،

SwingUtility لم اضعها لذلك لن تشاهد الupdate بين العملاء والسبب لأنني لم أعرف اين اضعها في Serialized Object

لكنني كتبت ماأعرفه عنها في Documentation وشرحتها لعل وعسى ان يتقبلها مني الدكتور خاصة وأنني الطالب الوحيد الذي استخدمها حسب ماسمعت :lol:

src.rar

#16

بالمناسبه لم تجبني على أسئلتي حول RMI

أتمنى تعطيني رايك وشكر معطر لك استاذي ابو مازن

#17

السلام عليكم

ServerClient الخادم شغله أولا

MyCanas العميل شغل منه عدة نوافذ

اضغط إدخال Enter لإضافة الأشكال، اعمل هذا في الشاشة السوداء.

هذا فقط تعديل على الخادم،، أرجو أن تأخذ منها الفكرة،، لاحظ استقلال الخادم والعميل الحقيقي ShapeClient من الواجهة MyCanvas.

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

الملفات المرفقة تبين لك الفكرة ولم أتعب عليها كثيرا. خذ الفكرة

ربما أوافيك بنسخة RMI منها ،، وأعتقد أنك ستسطيع أن تتعلمها بسهولة، فهي أسهل من العمل الذي عملته.

بالتوفيق!

src.zip

هذا الموضوع مغلق.

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