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 ميدهد و حالا ديگه بايد سيستم را ريستارت كنم. مشكل كار كجاست؟ من نبايد سيستم را ريستارت كنم. اين خيلي برام مهمه.
آيامشكل از اين كومپوننت كه استفاده كرده ام است؟ چيز بهتري براي ارتباط هست؟
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 ميدهد و حالا ديگه بايد سيستم را ريستارت كنم. مشكل كار كجاست؟ من نبايد سيستم را ريستارت كنم. اين خيلي برام مهمه.
آيامشكل از اين كومپوننت كه استفاده كرده ام است؟ چيز بهتري براي ارتباط هست؟