ورود

View Full Version : ارتباط دو كامپيوتر از طريق كد و اتصال خودكار



seyed_farid
پنج شنبه 03 آذر 1390, 17:03 عصر
من در برنامه از TClientSocket استفاده ميكنم و در كلاينت براي اتصال به سرور از دستور زير استفاده ميكنم و اين دستور را در تايمري قرار داده ام كه تا اتصال برقرار نشود مدام براي ارتباط تلاش مي كند.


begin
IF Command_Client_Socket.Socket.Connected Then
begin
Command_Client_Socket.Socket.Disconnect(Command_Cl ient_Socket.Socket.SocketHandle);
// Command_Client_Socket.Active := False;
Command_Client_Socket.Close;

end;
Command_Client_Socket.Address := Trim(Host1.Text);
Command_Client_Socket.Port := StrToIntDef(LPort.Text,2658);
// Command_Client_Socket.Active := True;
Command_Client_Socket.Open;

Result := (Command_Client_Socket.Active) and (Command_Client_Socket.Socket.ReceiveText <> '' );
end;

ولي در صورتيكه ارتباط قطع شده باشد و اين دستور بصورت مداوم اجرا شود و اتصال برقرار نشود پس از حدود 1000بار تلاش ، سيستم Memory Lacke ميدهد و حالا ديگه بايد سيستم را ريستارت كنم. مشكل كار كجاست؟ من نبايد سيستم را ريستارت كنم. اين خيلي برام مهمه.
آيامشكل از اين كومپوننت كه استفاده كرده ام است؟ چيز بهتري براي ارتباط هست؟

سعید صابری
پنج شنبه 03 آذر 1390, 21:42 عصر
از try ..except استفاده کن که در صورت بروز خطا بتونی timer را متوقف کن

seyed_farid
یک شنبه 06 آذر 1390, 10:54 صبح
دوست عزيز نمايش دادن خطا يا ندادن اون ، مشكل من نيست. با استفاده از اين بلوك شما خطاي پيش آمده را به كاربر نشون نميدي.
اما مورد اينه كه چه اتفاقي ميافته كه Memory Lacke ميده؟

سعید صابری
جمعه 11 آذر 1390, 13:16 عصر
دوست عزيز نمايش دادن خطا يا ندادن اون ، مشكل من نيست. با استفاده از اين بلوك شما خطاي پيش آمده را به كاربر نشون نميدي.
اما مورد اينه كه چه اتفاقي ميافته كه Memory Lacke ميده؟

ببخشید یه مدت نبودم!
منظور من نمایش خطا نبود TRY..EXCEPT که فقط برای نماش خطا نیست منظور من این بود وقتی خطا رخ میده شما TIMER را غیرفعال کنید که مجددا نخواد تلاش برای وصل شدن بکنه و...

seyed_farid
پنج شنبه 24 آذر 1390, 18:27 عصر
پس اونوقت كي بايد بياد برنامه را كليد كنه تا به سرور وصل بشه؟!
برنامه بايد خودكار كار كنه.