C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[5624] Re:[질문]서버에서 통신이 끊겼을때 5분단위로 Reconnection하는 로직에 대한 질문
Orun [] 2834 읽음    2001-02-21 19:12
^^
음.. 저의 짧은 소견으로 말씀을 드립니다.
소스가 전체가 나온게 아니라서 나머지 부분은 제가 상상을 해야하네여 ^^
구현하고자 하시는게 Client 접속프로그램인데.. Client가 접속을 못하면
5분후에 스레드를 이용해서 다시 Connect만을 시도하는 건가여 ?
아님. 스레드 내에서 접속후 어떠한 명령을 수행하는건가여?
만약 스레드가 하는 역할이 다시 접속해주는 역할만 하는 것이라면..
Timer를 사용하시는게 좋을 듯 하네여.
Timer의 Interval을 5분
Timer1->Enabled = false; 로 설정해놓고...
//---------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
   if( ClientSocket1->Active == false ) {
      Form1->InitialCom();
      Form1->SetDisConnectTime(EndTime);
   }
}
//---------------------------------------------
void __fastcall TForm1::ClientSocket1Connect(TObject *Sender,
      TCustomWinSocket *Socket)
{
   Timer1->Enabled = false;
}
//---------------------------------------------

void __fastcall TForm1::ClientSocket1Disconnect(TObject *Sender,
     TCustomWinSocket *Socket)
{
   Timer1->Enabled = true;
}
//---------------------------------------------
- -; 이렇게 하면 되지않을까 싶네여.. 조금 무식한가?
그리고, 아래의 스레드에서 DisConnect 될때는 정상적으로
스레드에서 연결을 시도하지만..
정상적으로 Connect됐을때도 접속을 시도하지않나요..
Connect가되면 스레드가 종료되는 부분이 없네여..??
부분소스라서 그런가 ? 아님.. Connect 가 되어있을때도
계속 스레드가 돌면서 연결을 시도하는건가여 ?
음.. 모르겠네여 요것만 보구선..
제가 질문을 잘못이해했다면.. 다른 고수분의 답변을
기다려보세요.. ^^


이영수 님이 쓰신 글 :
: 크라이언트에의 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가 잘 구현이 안되네요.. 됐다 안됐다 하니..영..~~~
: 종잡을 수가 없습니다. 어떤 부분이 잘못된는지.. 함 봐주세요
:
:

+ -

관련 글 리스트
5614 [질문]서버에서 통신이 끊겼을때 5분단위로 Reconnection하는 로직에 대한 질문 이영수 2598 2001/02/21
5624     Re:[질문]서버에서 통신이 끊겼을때 5분단위로 Reconnection하는 로직에 대한 질문 Orun 2834 2001/02/21
5622     Re:[질문]서버에서 통신이 끊겼을때 5분단위로 Reconnection하는 로직에 대한 질문 제라툴 2875 2001/02/21
5623         Re:Re:[질문]서버에서 통신이 끊겼을때 5분단위로 Reconnection하는 로직에 대한 질문 이영수 2514 2001/02/21
5625             Re:Re:Re:[질문]서버에서 통신이 끊겼을때 5분단위로 Reconnection하는 로직에 대한 질문 Orun 2436 2001/02/21
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.