13-10-2012, 05:22 PM
أخوتي الكرام الحمدلله حلت المشلكة واليكم الحل :
أولأ أنشأت ServerSocket و ClinetSocket على فورم واحد بعنوان 127.0.0.1
ثم وضعت تايمر بتوقيت 100 جزء يقوم بفتح الاتصال في ClinetSocket ومن ثم يوم بارسال جملة اليكم الكود :
هذا بالنسبة للسيرفر :
وهذا بالنسبة لـ كلاينت
بحيث يقوم في كل تشغيل بعمل تلقائي لكل فورم لوحده وبعد نهايته من العمل يقوم بتشغيل السوكت الرئيسي
شكراً لكم آخوتي
أولأ أنشأت ServerSocket و ClinetSocket على فورم واحد بعنوان 127.0.0.1
ثم وضعت تايمر بتوقيت 100 جزء يقوم بفتح الاتصال في ClinetSocket ومن ثم يوم بارسال جملة اليكم الكود :
هذا بالنسبة للسيرفر :
PHP كود :
procedure TForm10.CheckNameClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var s,r,str,name,all_Room,roomcontrol:string;
i,n:integer;
begin
S:=Socket.ReceiveText;
n:=pos('@',S);
if n>0 then
begin
str:=copy(S,1,n-1);
if str='*Mr2*' then
begin
for i := 0 to lvl1.Items.Count - 1 do
all_Room:=all_Room
+lvl1.Items[i].subitems[0] +'^%'
+lvl1.Items[i].subitems[1]+'$%'
+lvl1.Items[i].subitems[2]+'&)'
+lvl1.Items[i].SubItems[3]+'&('
+lvl1.Items[i].SubItems[4]+'&!'
+lvl1.Items[i].SubItems[5]+'&#'
+lvl1.Items[i].SubItems[6]+'&%'
+lvl1.Items[i].SubItems[7]+'&^'
+lvl1.Items[i].SubItems[8]+'&&'
+lvl1.Items[i].SubItems[9]+'(|'
+lvl1.Items[i].SubItems[10]+'!!'
+lvl1.Items[i].SubItems[11]+'!#'
+lvl1.Items[i].SubItems[12]+'!$'
+lvl1.Items[i].SubItems[13]+'!%'
+lvl1.Items[i].SubItems[14]+'!^'
+lvl1.Items[i].SubItems[15]+'!&'
+lvl1.Items[i].SubItems[16]+'!*'
+lvl1.Items[i].SubItems[17]+'!('
+lvl1.Items[i].SubItems[18]+'!)'
+lvl1.Items[i].SubItems[19]+'#!'
+lvl1.Items[i].SubItems[20]+'##'
+lvl1.Items[i].SubItems[21]+'#$'
+lvl1.Items[i].SubItems[22]+'#%'
+lvl1.Items[i].SubItems[23]+'#&'+'@';
for i:=0 to CheckName.Socket.ActiveConnections-1 do
CheckName.Socket.Connections[i].SendText('*Mr2*@'+all_Room);
end;
end;
end;
وهذا بالنسبة لـ كلاينت
PHP كود :
procedure TForm10.clntsckt1Read(Sender: TObject; Socket: TCustomWinSocket);
var str1,name,s,str2,nei_rong:string;
n,i:integer;
ni_cheng:string;
F:TForm5;
begin
str1:=socket.ReceiveText;
str2:=copy(str1,1,pos('@',str1)-1);
if str2='*Mr2*' then
begin
str1:=copy(str1,pos('@',str1)+1,length(str1)-pos('@',str1));
while str1<>'' do
begin
s:=copy(str1,1,pos('@',str1)-1);
F := TForm5.Create(nil);
f.Name:='R'+copy(s,pos('^%',s)+2,pos('$%',s)-pos('^%',s)-2); //اسم الفورم
f.tsNt.Caption:=copy(s,1,POS('^%',s)-1); // اسم الغرفة
f.Caption:=copy(s,1,POS('^%',s)-1); //اسم الغرفة
//بورت الاتصال
f.Sr1.Port:=StrToInt(copy(s,pos('^%',s)+2,pos('$%',s)-pos('^%',s)-2));
f.Sr2.Port:=StrToInt(copy(s,pos('^%',s)+2,pos('$%',s)-pos('^%',s)-2))+1;
f.Sr3.Port:=StrToInt(copy(s,pos('^%',s)+2,pos('$%',s)-pos('^%',s)-2))+2;
f.n1.Port:= StrToInt(copy(s,pos('^%',s)+2,pos('$%',s)-pos('^%',s)-2))+3;
f.n2.Port:= StrToInt(copy(s,pos('^%',s)+2,pos('$%',s)-pos('^%',s)-2))+4;
//
//ثيرد الاتصال
f.Sr1.ThreadCacheSize:=StrToInt(copy(s,pos('$%',s)+2,pos('&)',s)-pos('$%',s)-2));
f.Sr2.ThreadCacheSize:=StrToInt(copy(s,pos('$%',s)+2,pos('&)',s)-pos('$%',s)-2));
f.Sr3.ThreadCacheSize:=StrToInt(copy(s,pos('$%',s)+2,pos('&)',s)-pos('$%',s)-2));
f.n1.ThreadCacheSize:=StrToInt(copy(s,pos('$%',s)+2,pos('&)',s)-pos('$%',s)-2));
f.n2.ThreadCacheSize:=StrToInt(copy(s,pos('$%',s)+2,pos('&)',s)-pos('$%',s)-2));
//
f.ClE3.Text:=copy(s,pos('&%',s)+2,pos('&^',s)-pos('&%',s)-2); //التاريخ
f.cl2.Text:=copy(s,pos('&^',s)+2,pos('&&',s)-pos('&^',s)-2); //التاريخ
//
f.edt18.Text:=copy(s,pos('&(',s)+2,pos('&!',s)-pos('&(',s)-2); // السكيورتي
f.e1.Text:='0';
f.Ow1.Text:=copy(s,pos('&&',s)+2,pos('(|',s)-pos('&&',s)-2);//رقم الصورة المفعلة
f.Eedt1.Text:=copy(s,pos('!!',s)+2,pos('!#',s)-pos('!!',s)-2);//رابط
f.se1.Value:=StrToInt(copy(s,pos('^%',s)+2,pos('$%',s)-pos('^%',s)-2));//رقم الغرفة
f.ClE2.Text:=copy(s,pos('$%',s)+2,pos('&)',s)-pos('$%',s)-2);//حجم الغرفة
f.Eow1.Text:=copy(s,pos('&!',s)+2,pos('&#',s)-pos('&!',s)-2);//الاونر
f.Erla1.Text:=copy(s,pos('(|',s)+2,pos('!!',s)-pos('(|',s)-2);//المود العام
f.edt5.Text:=copy(s,pos('!$',s)+2,pos('!%',s)-pos('!$',s)-2);//اعدادات الاونر
f.edt13.Text:=copy(s,pos('!%',s)+2,pos('!^',s)-pos('!%',s)-2);//الغرفة صامتة
f.edt14.Text:=copy(s,pos('!^',s)+2,pos('!&',s)-pos('!^',s)-2);//اعدادات المود
f.Edit2.Text:=copy(s,pos('!&',s)+2,pos('!*',s)-pos('!&',s)-2);//باسورد الغرفة
f.Edit1.Text:=copy(s,pos('!*',s)+2,pos('!(',s)-pos('!*',s)-2);//تفعيل الكتابة
f.Edt15.Text:=copy(s,pos('!(',s)+2,pos('!)',s)-pos('!(',s)-2);//الكتابة الخاصة
f.Edt16.Text:=copy(s,pos('!)',s)+2,pos('#!',s)-pos('!)',s)-2);//تفعيل الصوت
f.Edt17.Text:=copy(s,pos('#!',s)+2,pos('##',s)-pos('#!',s)-2);//تفعيل الصورة
f.se4.Text:=copy(s,pos('##',s)+2,pos('#$',s)-pos('##',s)-2);//المايكريفونات
f.se2.Text:=copy(s,pos('#$',s)+2,pos('#%',s)-pos('#$',s)-2);//ادوار الانتظار
f.se3.Text:=copy(s,pos('#%',s)+2,pos('#&',s)-pos('#%',s)-2);//التحدث بالثواني
for i := 0 to lv1.Items.Count - 1 do
if lv1.Items[i].subitems[5]=copy(s,pos('^%',s)+2,pos('$%',s)-pos('^%',s)-2) then begin
with f.lv2.Items.Add do begin
Caption:=IntToStr(f.lv2.Items.Count);
SubItems.Add(lv1.Items[i].subitems[0]);
SubItems.Add(lv1.Items[i].subitems[1]);
SubItems.Add(lv1.Items[i].subitems[2]);
SubItems.Add(lv1.Items[i].subitems[3]);
SubItems.Add(lv1.Items[i].subitems[4]);
end;
end;
for i := 0 to lvlv2.Items.Count - 1 do
if lvlv2.Items[i].subitems[2]=copy(s,pos('^%',s)+2,pos('$%',s)-pos('^%',s)-2) then begin
with f.lv4.Items.Add do begin
Caption:=IntToStr(f.lv4.Items.Count);
SubItems.Add(lvlv2.Items[i].subitems[0]);
SubItems.Add(lvlv2.Items[i].subitems[1]);
SubItems.Add(lvlv2.Items[i].subitems[2]);
end;
end;
f.Sr1.Active:=True;
f.Sr2.Active:=True;
f.Sr3.Active:=True;
f.n1.Active:=True;
f.n2.Active:=True;
f.Show;
f.e1.Clear;
f.e1.Text:='0';
f.Hide;
str1:=copy(str1,pos('@',str1)+1,length(str1)-pos('@',str1));
end;
Form1.n3.Open;
end;
بحيث يقوم في كل تشغيل بعمل تلقائي لكل فورم لوحده وبعد نهايته من العمل يقوم بتشغيل السوكت الرئيسي
شكراً لكم آخوتي
اللهمّ إنّي ظلمت نفسي ظلماً كثيراً ولا يغفر الذّنوب إلا أنت
فاغفر لي مغفرة من عندك وارحمني إنّك أنت الغفور الرّحيم
فاغفر لي مغفرة من عندك وارحمني إنّك أنت الغفور الرّحيم

