ورود

View Full Version : مديريت خطاي برنامه شبكه



Mask
جمعه 06 فروردین 1389, 10:53 صبح
با سلام
برنامه اي تحت شبكه نوشته ام.
بر روي سرور برنامه سرور و بر روي كلاينت برنامه كلاينت نصب شده است.
توسط ping روشن و خاموش بودن سرور توسط كلاينت تست شده و دستورات كلاينت براي سرور ارسال ميشود.
گاهي اوقات سيستم سرور روشن است ولي برنامه ران نيست و چون برنامه كلاينت درخواست خود را ارسال ميكند و برنامه سرور براي پاسخ گويي در حال اجرا نيست ارور زير نمايش داده ميشود.


socket error # 10061
connection refused
براي مديريت اين ارور كه برنامه كلاينت چك بكند اگر برنامه سرور در حال اجرا بود درخواستهاي خود را ارسال كند چه كاري بايد انجام داد.
با تشكر از جوابتون.

vcldeveloper
چهارشنبه 11 فروردین 1389, 20:03 عصر
این هم یک Exception هست، مثل سایر Exception ها، وقتی این Exception رخ میده، کلاس Exception را هم دیباگر برگشت میده، کد مربوطه را در یک بولک try-except قرار میدید، و در بخش except بررسی می کنید که آیا Exception رخ داده از کلاس مورد نظر شما هست یا نه، اگر بود، اقدام مورد نظرتان را انجام میدید:


try
{connect to remote server}
except on E: TIdSocketError do
{A socket error is generated, handle it here}
end;

Mask
شنبه 14 فروردین 1389, 11:44 صبح
با تشکر از جناب کشاورز عزیز
کد من به شکل زیر بود

procedure TForm1.Button1Click(Sender: TObject);
begin
Form1.IdTCPClient1.Host:=Edit2.Text;
Form1.IdTCPClient1.Port:=strtoint(Edit1.Text);
try
with IdTcpClient1 do
begin
connect;
Writeln(Edit3.Text);
Disconnect;
end;
finally
end;
end;

که با توضیحات شما تبدیل شد به

procedure TForm1.Button1Click(Sender: TObject);
begin
Form1.IdTCPClient1.Host:=Edit2.Text;
Form1.IdTCPClient1.Port:=strtoint(Edit1.Text);
try
with IdTcpClient1 do
begin
connect;
Writeln(Edit3.Text);
Disconnect;
end;
except
ShowMessage('');
end;
end;
بازم نشد . نمی دونم ایراد از کجاست.
و یه سوال دیگه اینکه آیا با استفاده از یک ApplicationEvent از تب Additionalv روی فرم میشه این خطا رو مدیریت کرد . یا اینکه اصلا ربطی نداره.
با تشکر.

pezhvakco
شنبه 14 فروردین 1389, 12:24 عصر
درود :
باز هم همون خطا رو میده .
ساختار Try رو یه تغییر بده :

try
دستورات مورد نظر
except on E: Exception do
کار هنگام خطا
end;
درود .