![]() |
|
استفسار حول serversocket - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3) +--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15) +--- الموضوع : استفسار حول serversocket (/showthread.php?tid=396) |
استفسار حول serversocket - A.FATEH - 07-01-2009 السلام عليكم ورحمة الله :o اعتذر لان مشاركتي الاولى عبارة استفسار ![]() المهم بعد بحث في هذا المنتدى وفي منتديات كثيرة لم اجد معلومات حول نقطة دائما ما نسنفزني وهي : عند تصميم برنامج يعتمد على socket فان طريقة الاتصال المعروفة(على حسب فهمي) هي بين برنامج الخادم (clientsocket) وبرنامج العميل (serversocket) لكن عند تعدد برامج العميل، كيف نستطيع ربط عميلين (على الاقل)ببرنامج سرفر واحد بمعنى كيف يمكن للسرفر تحويل المعلومات من العميل 1 الى العميل 2 - برنامج السرفر دائم الاتصال بالنترنت ويحوي قاعدة بيانات صغيرة -برنامج العميل يرسل معلومات الى السرفر (قاعدة البيانات) والى العميل الاخر. واعتذر مرة اخرى وشكرا مسبقا. استفسار حول serversocket - محمد عبد العزيز - 07-01-2009 لاداعئ للاعتذار المنتدى مكان لتبادل المعرفة بين الجميع إقتباس :كيف يمكن للسرفر تحويل المعلومات من العميل 1 الى العميل 2 تقصد كيف يمكن لServer تحويل معلومة منClient1 الى Client2 كمثال في برنامج محادثة Mohammed يرسل جملة لAbdelAziz Mohammed يرسل الى Server Server يتلقى المعلومة Server يفحص المعلومة ليقوم ما يترتب عليها، وهنا هنا ارسال المنعلومة الى Abdelaziz Server يبحث بين المتصلين عن AbdelAziz ان وجده يرسل له الجملة (المعلومة) ان لم يجده يرسل رسالة الى Mohammed بان الرسالة لم تصل لان AbdelAziz غير موجود هذه هي الفكرة باختثار اما ان كنت تقصد شيئ اخر اوضح ذلك قدر ما تستطيع والسلام عليكم استفسار حول serversocket - A.FATEH - 07-01-2009 السلام عليكم ورحمة الله شوف اخي: في برنامج المحادثة فان سرفر واحد يربط عميلين فقط (02clients) اظنها سهلة .. لكن في حالة وجود اكثر من عميلين كيف يمكن للسرفر توجيه المعلومات مثلا لـ client2 دون client3.في مثال برنامج المحادثة فان السرفر ( عندي) لا يفرق بين الـclients :confused:فيستقبل ويرسل في نفس الوقت من جميع clients... فيظهر كل ما كتب في memo مثلا (وكانها غرفة شات ) :oوهنا ما اردت هو كيف يمكن للسرفر التمييز بين client2 و client3 .... في جهد متواضع لايجاد حل اردت استعمال قاعدة بيانات لكن في الحقيقة لم اجد من اين ابدا ![]() **** ان اكون قد اوضحت .. والسلام عليكم استفسار حول serversocket - محمد عبد العزيز - 07-01-2009 اعطيتك مثال لبرنامج محادثة كون برنامج المحادثة يستخدم من اكثر من شخصين في نفس الوقت لو تمعنت في ردي السابق انني قلت "يبحث بين المتصلين عن AbdelAziz" اي هناك عدد من المتصلين وكل متصل له ID يميزه عن غيره لكي تفهم اكثر لدينا المكون ServerSocket1 به جدول للمتصلين ServerSocket1.Socket.Connections لارسال للمتصل الرابع مثلا ServerSocket1.Socket.Connections[3].SendBuf وان كان نص SendText او SendStream ان كان شيئ اخر لاحظ كتبت 3 لانه المتصل الرابع لكن في الحقيقة قبل ذلك يجب التحقق من ان الرابع هو المعني وذلك يتم من خلال IP او من خلال المعومات المرسلة عند الاتصال اول مرة من Name و Password هل وصلت الفكرة ؟ والسلام عليكم استفسار حول serversocket - A.FATEH - 07-01-2009 السلام عليكم ورحمة الله الحمد لله اظن وصلت الفكرة وباقي التطبيق فقط -السرفر ينشئ قائمة بالمتصلين (listbox)وعلى حسب ترتيب اتصالهم ويرسلها لاي عميل يتصل -العميل يختار عميل اخر "للمحادثة" -السرفر من خلال ترتيب العميل في الاتصال' i ' يرسل البيانات Server.Socket.Connections[i].sendtext وهكذا يتم الارسال الى المتصل الذي ترتيبه في الاتصال i في هذه الحالة i := listbox.itemIndex لكن باقي الصيغة التي يرسلها العميلx لاختيار عميلy والسلام عليكم استفسار حول serversocket - محمد عبد العزيز - 08-01-2009 إقتباس :باقي الصيغة التي يرسلها العميلx لاختيار عميلy هذا يسمى البروتوكول، وهو مجموعة الاوامر التي يفهمها الخادم والعميل ويتعامون بها مثال لارسال رسالة نصها "Visit delphi4arab.net"الى شخص اسمه AbdelAziz يكون النص إقتباس :Send@AbdelAziz@Visit delphi4arabعندما يستقبل Server النثص يقوم بتقسيمه حسب الحرف الخاص الفاصل وهو @ يحصل على ثلاث String Send وهو امر الارسال AbdelAziz الشخص المرسل اليه Visit delphi4arab.net وهو محتوى الرسالة مثال اخر إقتباس :SND9AbdelAzizVisit delphi4arabفي هذا المثال يقوم Server باخذ 3 احرف الاولى التي تمثل الامر (كل الأوامر من 3 احرف فقط) SND امر ارسال في هذه الحالة يخذ الارقام التي تليه 9 تمثل عدد الاحرف التي ياخذها في مايلي والتي تمثل اسم المرسل اليه اي AbdelAziz وما تبقى من النص يمثل الرسالة Visit delphi4arab.net طبعا هذه مجرد امثلة وهناك غيرها والسلام عليكم استفسار حول serversocket - A.FATEH - 08-01-2009 السلام عليكم ورحمة الله والله تشكر اخي على التوضيح وتبسيط الفكرة ساحاول من هذه النقطة بحسب ما فهمت بارك الله فيك والسلام عليكم |