فكرة الـ irc تختلف عن اتصال العادي
يتم عمل اتصال اشبه ما يكون بالغرف بتصل عليها الـ clients و اي شي يكتب في تلك العرف يرسل الى جميع متصلين من client في الغرفة
لا ادري ادا يمكن للـ server ارسال ام يكتفي بالمعالجة الاتصال و غرف و امورها و رسائل فيهاا
الافضل استعمال برتكول الام لكل هدا tcp و معروف ك tidtcpserver - tidtcpclient
طيب إذا تكرمت بمثال للسيريفر عن :
1 - عبر حلقة يتم استقبال فيها البيانات المرسلة execute loop
2 - الارسال عبر دوال wrtite string - write integer - write stream
السلام عليكم ورحمة الله وبركاتة
أكتشفت طريقة إرسال البيانات إلى Clients ... وهي من خلال الكود التالي :
PHP كود :
procedure TForm1.Button3Click(Sender: TObject); var Clients : TList; i : Integer; begin Memo1.Lines.Add('You : ' + Edit1.Text); if not Assigned(IdIRCServer1.Contexts) then Exit;
Clients := IdIRCServer1.Contexts.LockList; for i := 0 to IdIRCServer1.Contexts.Count-1 do try TIdContext(Clients.Items[i]).Connection.Socket.Write(Edit1.Text); finally IdIRCServer1.Contexts.UnlockList; end; end;
أجد مشكلة أخر بعملية الأرسال وهي اني عندما ارسل من خلال الكود الموضح بالمشاركة التي تسبق هذه ..
يتم الارسال وبعد ذلك اضغط الزر مره اخرى .. لا يتم الارسال .. واضغط للمره الثالثة يتم الارسال ..
أي انه يتم الارسال مره بعد مره وليس كل مره اضغط الزر يتم الارسال !
.. أعتقد أني حصلت على الحل , وهو أن المكون Indy له طريقة في التعامل مع البيانات المرسلة
حيث أن الدالة : ReadLn
PHP كود :
AContext.Connection.Socket.ReadLn()
تعمل كتالي :
في البداية تتلقى البياانات
وبعد ذلك تتلقى بيانات آخرى تشير إلى أن السيرفر انتهى من أرسال البيانات .. وفي حالتي انا لم اضع البارمترات الخاصة بالدالة .. لذلك اصبحت ( ترسل البياانات مره بعد مره كما ذكرت ) لذلك توجب علي أن اضع بارمترت وهو عبارة عن String يشير إلى نهاية إرسال البيانات كتالي :
PHP كود :
procedure TForm2.IdIRC1AfterCommandHandler(ASender: TIdCmdTCPClient; AContext: TIdContext); var Msg : string; begin Msg := AContext.Connection.Socket.ReadLn('//FinishedSending//'); Memo1.Lines.Add('Server 1: ' + Msg) end;
واضيف تلك العبارة "//FinishedSending//" إلى أمر ارسال البياانات بعدة إنتهائي من إرسال البيانات في السيرفر
هذا ما استنتجته .. والسلام عليكم
وشكرا لك أخي Houdini