|
크라이언트에의 Disconnect Event Handler에 Disconnect된 시간을 저장합니다.
글구 스레드를 생성하고 실행합니다.
void __fastcall TForm1::ClientSocket1Disconnect(TObject *Sender,
TCustomWinSocket *Socket)
{
DisConnectTime = GetTickCount(); // DisConnect된 시간을 구한다.
if(ReConnect == NULL)
ReConnect = new TReConnect(false); //Reconnect 스레드를 생성과 동시에 실행 한다.
}
스레드의 실행모듈에서는 현재 시간을 구해 Disconnec된지 5분이 지났나를 체크합니다.
글구 만약 5분이 지났다면 다시 Connect를 시도 합니다.
Form1->GetDisConnectTime(); 아까 Disconnect될때 Disconnect된 시간을 가지고 있습니다.
void __fastcall TReConnect::Execute()
{
int EndTime;
while(!Terminated)
{
EndTime = GetTickCount();
if(((EndTime - Form1->GetDisConnectTime())/1000) > 300)
{
Form1->InitialCom();
Form1->SetDisConnectTime(EndTime);
}
Sleep(0);
}
}
소켓 초기화 함수
void __fastcall TForm1::InitialCom()
{
ClientSocket1->Close();
ClientSocket1->Address = xxx.xxx.xxx.xxx;
ClientSocket1->Port = xxxx;
ClientSocket1->Open();
}
이렇게 구현을 했는데...Reconnect가 잘 구현이 안되네요.. 됐다 안됐다 하니..영..~~~
종잡을 수가 없습니다. 어떤 부분이 잘못된는지.. 함 봐주세요
|