PDA

View Full Version : انجام Test Connection قبل از استفاده از كانكشن



kamrannazari
چهارشنبه 10 تیر 1388, 20:22 عصر
سلام
من توي برنامه از يك كامپوننت adoconnection استفاده كردم وقتي روي اون دابل كليك مي كني و كانكشن استرينگ رو ست مي كني يك كليد داره كه مي توني برقراري ارتباط رو با سرعت بالايي بررسي كني يعني اگر ارتباطي نباشه خيلي سريع عدم موفقيت رو اعلام مي كنه.
حالا من مي خوام توي برنامه يه گزينه بذارم كه كاربر با كليك روي اون يك كانكشن استرينگ بررسي بشه و بهش جواب داده بشه اگر از خود adoconnection و رويداد event استفاده كنيم يه كم طول مي كشه مي خواستم ببينم كسي راه حل استانداردي سراغ داره.
تشكر

vcldeveloper
پنج شنبه 11 تیر 1388, 03:24 صبح
اون Test Connection هم کار خاصی نمیکنه. فقط یک بار Connection را Open & Close میکنه. زمانش هم فرق خاصی با زمانی که شما AdoConnection را Open\Close می کنید، نداره.

kamrannazari
شنبه 13 تیر 1388, 19:03 عصر
تقريبا پيداش كردم بهترين روش اينه كه ابتدا سرور مورد نظر رو پينگ كنيم اگر وجود داشت بعد با كانكشن تست كنيم چون فقط در صورتي كه سرور وجود نداشته باشه خيلي طول مي كشه

delphiprog3000
دوشنبه 05 مرداد 1388, 17:17 عصر
تقريبا پيداش كردم بهترين روش اينه كه ابتدا سرور مورد نظر رو پينگ كنيم اگر وجود داشت بعد با كانكشن تست كنيم چون فقط در صورتي كه سرور وجود نداشته باشه خيلي طول مي كشه

سلام. دوست من اگه برات امکانش هست روشی رو که مورد نظر شماست برای بنده وسایر دوستان قرار دهید...

با تشکر...........

kamrannazari
دوشنبه 19 مرداد 1388, 08:41 صبح
من خودم از اين روش استفاده كردم(با استفاده از مديريت خطاها)
١ - اين كد را در قسمت type فرم اصلي خود قرار دهيد

procedure AppException(Sender: TObject; E: Exception);

٢-


procedure TMainForm.AppException(Sender: TObject; E: Exception);
Var F:TextFile;
begin
denied' Then Form1.Msg(#13+'ÇÑÊÈÇØ ÈÇ ßÇãíæÊÑ ÇÕáí ÈÑÞÑÇÑ äãí ÈÇÔÏ'0)
äÏÇÑÏ') else
AssignFile(F,ExtractFilePath(Application.ExeName)+ 'Error'+shamsi('yy',now,True)+'.txt');
If FileExists(ExtractFilePath(Application.ExeName)+'E rror'+shamsi('yy',now,True)+'.txt') Then
Append(F) else Rewrite(F);
WriteLn(F,shamsi('yy/mm/dd hh:mm',now,True)+':'+ E.Message);
If mainForm.MDIChildCount>0 Then
WriteLn(F,#9#9+'LastForm:'+(MainForm.MDIChildren[0] as TForm).Name);
If LastSql<>'' Then WriteLn(F,#9+LastSql);
CloseFile(F);
If Pos('server does not exist or access denied',Lowercase(E.Message))>0 Then
Begin
Msg('ارتباط با كامپيوتر اصلي قطع مي باشد');
end else
begin
Msg(E.Message,mtError,0,8,false);
Begin
End;
end;
end;




٣ در form create

Application.OnException := AppException;


روش دوم با استفاده از پينگ كردن مي توان انجام داد

arsisman2006
دوشنبه 19 مرداد 1388, 11:39 صبح
سلام
ميشه در مورد مثالت توضيح بدي
چون من با اين مشكل خيلي درگيرم . مخصوصا وقتي از حالت client - server استفاده ميكنم
مثلا اتصال با پورت 4000 (بجاي 1433 در tcp)
چجوري ميتونم متوجه بشم كه سرور در دسرس هست يا نه

متشكرم

arsisman2006
سه شنبه 20 مرداد 1388, 09:15 صبح
من خودم از اين روش استفاده كردم(با استفاده از مديريت خطاها)
١ - اين كد را در قسمت type فرم اصلي خود قرار دهيد

procedure AppException(Sender: TObject; E: Exception);

٢-


procedure TMainForm.AppException(Sender: TObject; E: Exception);
Var F:TextFile;
begin
denied' Then Form1.Msg(#13+'ÇÑÊÈÇØ ÈÇ ßÇãíæÊÑ ÇÕáí ÈÑÞÑÇÑ äãí ÈÇÔÏ'0)
äÏÇÑÏ') else
AssignFile(F,ExtractFilePath(Application.ExeName)+ 'Error'+shamsi('yy',now,True)+'.txt');
If FileExists(ExtractFilePath(Application.ExeName)+'E rror'+shamsi('yy',now,True)+'.txt') Then
Append(F) else Rewrite(F);
WriteLn(F,shamsi('yy/mm/dd hh:mm',now,True)+':'+ E.Message);
If mainForm.MDIChildCount>0 Then
WriteLn(F,#9#9+'LastForm:'+(MainForm.MDIChildren[0] as TForm).Name);
If LastSql<>'' Then WriteLn(F,#9+LastSql);
CloseFile(F);
If Pos('server does not exist or access denied',Lowercase(E.Message))>0 Then
Begin
Msg('ارتباط با كامپيوتر اصلي قطع مي باشد');
end else
begin
Msg(E.Message,mtError,0,8,false);
Begin
End;
end;
end;




٣ در form create

Application.OnException := AppException;


روش دوم با استفاده از پينگ كردن مي توان انجام داد

سلام
ميشه در مورد مثالت توضيح بدي
چون من با اين مشكل خيلي درگيرم . مخصوصا وقتي از حالت client - server استفاده ميكنم
مثلا اتصال با پورت 4000 (بجاي 1433 در tcp)
چجوري ميتونم با تست كانكشن ، متوجه بشم كه سرور در دسترس هست يا نه

متشكرم