![]() |
|
ارسآل النصوص بين الكلينت و السرفر مع الإندي, ؟ - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3) +--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15) +--- الموضوع : ارسآل النصوص بين الكلينت و السرفر مع الإندي, ؟ (/showthread.php?tid=1169) |
ارسآل النصوص بين الكلينت و السرفر مع الإندي, ؟ - AL-MOB4RM3G - 27-09-2009 السلام عليكم من جديد,, اخوآني الكرام,, هناك بعض التقدم لكنه ليس كبير,, اولا وقبل ان ابدئ اود ان اشكر الأخ o15s19 عل ما قدمه لي من امور,, فقد ساعدني كثيرا بارك الله له,, وجزآه الله عنّي كل خير,, لكن الأحوال والله المستعان, ابتعد الأخ العزيز لأسباب اسأل الله ان ان ييسر له,, فصرت الآن وحيدا :kick: على كل حال, البرنآمج يرسل الآن من الكلينت الى السرفر,, و يمكن ايضا ارسآل النّص من السرفر الى الكلينت في الحدث,, onExecute بقي ان ارسل النص من السرفر الى كل الكلينتس,, هذا وجدته في منتدى الأخ عروة,, إقتباس :كمثال سؤآلي اخوآني الكرام بالتحديد عن هذه إقتباس :وهذا يتطلب حفظ الconnections لكل زبون متصل في مصفوفة مثلا كيف تتم ؟ وكيف احفظ الكونكشن بارك الله لكم على كل حال, السورس في المرفقات الآن, بارك الله بكم ارسآل النصوص بين الكلينت و السرفر مع الإندي, ؟ - AL-MOB4RM3G - 28-09-2009 طيب اخوآني الكرام,, :bye1: لعلّي اقسم المشوآر الى اقسآم,, اولا,, إقتباس :- كلما اتصل زبون اخزن معلومات اتصاله في مصفوفة , وبالتالي يصبح لدي لائحة بالمتصلين حاليا ما هي المعلومات التي احتاج لتخزينها,, هل يكفي الأيبي ؟ ام يحتاج اخزن معلوات اكثر مثل البورت او معلومات اخرى ؟ بارك الله لكم ارسآل النصوص بين الكلينت و السرفر مع الإندي, ؟ - o15s19 - 29-09-2009 أخي أهم شي تخزن الأي بي الخاص بالجهاز لانه عن طريقة يمكنك فعل كل شئ و الفكرة عندما يتصل العميل بالخادم نقوم بادخال أي بي الجهاز إلى مصفوفة Array أو إلى ListStrings أو كما تحب و عندما ينقطع الاتصال مع العميل نحذفه مثلا من المصفوفة أو نقوم بشئ أخر تخزين معلومات أخرى حسب الرغبة مثلا البورت الذي يتصل منه العميل أو Thread أو Context الخاص بالعميل من أجل ارسال الرسالة له و يتم ذلك من خلال TList مثلا كل ذلك حسب متطلباتك أخي الكريم و أي سؤال أخر انا جاهز ارسآل النصوص بين الكلينت و السرفر مع الإندي, ؟ - AL-MOB4RM3G - 29-09-2009 الله يبارك فيكم اخي ويرفع قدركم,, اذا بقي هناك امرين 2 لم اعرفهم بعد,, 1. بعد تخزين الأيبي و الأمور الأخرى,, ما هو امر الأرسآل من السرفر الى الكلينت ؟ يعني يعمل كونكت السرفر مع الكلينت وبعدها يعمل writeLn ويرسل ال String ,, ما هو هذا الأمر,, 2. في الكلينت, كيف يعرف الكلينت انه وصل الآن string ؟ هل يجب ان يكون هناك تايمر يعمل readLn مثلا ؟ بارك الله فيكم وجزآك الله خيرا,, وآشكرك اخي الكريم o15s19 على جهودك وتعبك معي :bye1: والسلام عليكم ورحمة الله ارسآل النصوص بين الكلينت و السرفر مع الإندي, ؟ - o15s19 - 30-09-2009 AL-MOB4RM3G كتب :ما هو امر الأرسآل من السرفر الى الكلينت ؟ ذا الأمر بسيط كل ما عليك فعله هو معرة ال Context أو ال Thread الخاص بالجهاز و عندها الأم بسيط و هو كود : Context.Connection.IOHandler.WriteLnو يجب التأكير على موضوع ال Context أو Thread الخاص بالكلاينت لأنه و بدونه لا يمكنك ارسال الرسالة له في هذا النوع من الاتصال (طبعا في بروتوكول UDP يمكنك عمل BroadCast للمسج الذي تريده حتى و إن كنت لا تعرف من هو المتصل معاك و هذا يفيد في حالات عرض صورة جماعية لمجموعة من الاجهزة أو فيديو أو صوت لأنه بهذه الحالة لن تتكفل عنا ارسال رسالة خاصة لكل جهاز ............. انتهت الاضافة) نعود لل TCP فعند معرفة Context فاكتب الامر السابق و ستجد أن السرفر أصبح يرسل للكلينت و للتجربة ارسل رسالة للكلينت ترحب به مثلا أول ما يتصل الكلاينت بالسرفر فهنا اأمر يكون؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ صحيح بحدث OnConnect (بالسرفر) اكتب التالي و ستجد أن الامر يعمل: كود : Acontext.Connection.IOHandle.WriteLN('أهلا بك')طبعا التفسير هنا هو أن Context الكلاينت هو Acontext و ستجدها معرفة تلقائيا عند ادخال الحدث OnConnect على برنامجك المشكلة الثانية هي كيف سيقرأ الكلاينت هذا الأمر القادم من السرفر و الحل قبل ما اكتب الحل جرب حلك أن و خبرني شو بصير معك(اقصد التايمر) ملحوظة جرب الامور الاسهل فالأصعب يعني انت طبق هي المعلومات فقط على كلينت واحد و سرفر و ثم نقوم بزيادة عدد الكلاينتس و بعدها نطور الكود ملحوظة أسف على تأخري بالرد لأنو عندي امتحانات و اعذرني ارسآل النصوص بين الكلينت و السرفر مع الإندي, ؟ - AL-MOB4RM3G - 30-09-2009 نعم, السلام عليكم من جديد,, اخي الكريم,, إقتباس :ذا الأمر بسيط كل ما عليك فعله هو معرة ال Context أو ال Thread الخاص بالجهاز و عندها الأم بسيط و هو إقتباس :نعود لل TCP ما المقصود بمعرفة ال Context اخي؟ وكيف يتم ذلك؟ هل تقصت معرفة الأي بي للكلينت ام ماذا بارك الله لك؟ إقتباس :Acontext.Connection.IOHandle.WriteLN('أهلا بك') إقتباس :المشكلة الثانية هي كيف سيقرأ الكلاينت هذا الأمر القادم من السرفر و الحل إقتباس :قبل ما اكتب الحل جرب حلك أن و خبرني شو بصير معك(اقصد التايمر) نعم,, اخي, هذا قد جربته انا من قبل وليست لي مشكلة بها, المشكلة التي انا فيها الآن هي ليست ارسآل النصوص بين الكلينت و السرفر,, فهذا قد تم بنجآح ولله الحمد, وكذلك العكس,, ففي الحدث OnConnect وضعت الكود الذي وضعته حضرتك,, وقرئت من خلآل الكبينت في الرسآلة المرسلة اليه بعد الكود try و finaly على كل حال مشكلتي حآليا مع عدة كلينتات وليس كلينت وآحد,, بعد البحث في النت كثيرا,, وجدت هذا الكود,, PHP كود : isn't is justوترجمته انا لننسخة الإندي 10 فأصبح, PHP كود : procedure TForm1.IdTCPServer1Connect(AContext: TIdContext);لكن هناك خلل في الكود هذا PHP كود : AContext(form1.ListBox1.Items[int]).Connection.IOHandler.WriteLn('hello'); ورسآلة الخلل عندي هنا هي,, إقتباس :[DCC Error] Qserver.pas(142): E2066 Missing operator or semicolon هل من اقترآح بارك الله لكم ؟ وكما قلت انت اخي الكريم, إقتباس :ملحوظة جرب الامور الاسهل فالأصعب يعني انت طبق هي المعلومات فقط على كلينت واحد و سرفر هذه,,, انتهيت منها ولله الحمد,, الآن انا في هذه النقطة إقتباس :و ثم نقوم بزيادة عدد الكلاينتس و بعدها نطور الكود وجزآكم الله خيرا اخي الحبيب على تعبك معي وإرشآدي و تعليمي,, والسلام عليكم ورحمة الله :bye1: ارسآل النصوص بين الكلينت و السرفر مع الإندي, ؟ - AL-MOB4RM3G - 01-10-2009 اخوآني ما رئيكم الآن ؟ :laugh: هذا الكود,, PHP كود : procedure TForm1.Button4Click(Sender: TObject);لكن ماذا لو كان هناك كلينت وآحد متصل ؟ يحدث خلل والله اعلم,, <------------ حسب التجربة, على كل حآل,, هذه خطوة الى الأمام ؟ لكن هناك تسآؤل,, الأمر ReadLn,, كم مرّة يقرأ ؟؟؟ يعني ماذا لو تم ارسآل امرين من ال WriteLN هل ممكن ان اقرآها بوآحدة من ReadLN ؟؟ ام ان الأمر ReadLN يقرأ آخر رسآلة من ال WriteLN فقط ؟ لآن الذي يحدث معي هو,, لا استطيع ان اقرأ الكود الذي في الأعلى الّى بوآحد من الكلينتس المتصلين,, هل من اقترآح بارك الله لكم ؟ والسلام عليكم ورحمة الله :bye1: ارسآل النصوص بين الكلينت و السرفر مع الإندي, ؟ - AL-MOB4RM3G - 01-10-2009 إقتباس :لا استطيع ان اقرأ الكود الذي في الأعلى الّى بوآحد من الكلينتس المتصلين,, هل لهذا علآقة بأن كل Clients يعملون على لوكال هوست LocalHost ؟ :unsure: بارك الله لكم ارسآل النصوص بين الكلينت و السرفر مع الإندي, ؟ - AL-MOB4RM3G - 02-10-2009 إقتباس :لكن ماذا لو كان هناك كلينت وآحد متصل ؟ إقتباس :لا استطيع ان اقرأ الكود الذي في الأعلى الّى بوآحد من الكلينتس المتصلين,, إقتباس :هل لهذا علآقة بأن كل clients يعملون على لوكال هوست localhost ؟ هههه, اتعرفون ما كانت المشكلة ؟؟ :oops: لحظوا الكود التآلي,, PHP كود : ac := Threads[1]; يجب ان يكون PHP كود : ac := Threads[I]; ,, :monster2: الحمد لله حلّت المشكلة ولله الحمد,, شكرا كثيرا اخي الكريم o15s19 بارك الله لك ونفه الله بك وغفر لنا ولك, والسلام عليكم ورحمة الله ارسآل النصوص بين الكلينت و السرفر مع الإندي, ؟ - o15s19 - 02-10-2009 على فكرة انظر بالصفحة السابقة بأول رد لي على مشاركتك و ستلاحظ أنك وصلت للكود الذي وضعته و لكن وصولك هذا افضل لانك الان على ما اظن فهمت فكرة الاتصال و الارسال بين السرفر و الكلاينت في بروتوكول tcp و حتى فكرة التايمر تجد أني أشرت لها فهل هنا بعد مشكلة أم انحل كل الأمر و اصبحت ترسل بين الكلاينت و السرفر بدوون مشاكل و باللغة العربية؟؟؟؟ |