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
[60042] Re:소켓 에러 좀 봐주세요~
오렌지78 [davinm] 936 읽음    2010-01-29 12:52
void __fastcall TDataModuleComm::PCCheckTimerTimer(TObject *Sender)
{
    TTimer *TimerCur = static_cast<TTimer *>(Sender);

    /*
    // 통상적으로 Client의 Host Port Number와 IP Address는  초기에 생성자 또는 Init 하는 부분에서
    // 정의 해서 사용 하도록해야 간결합니다.
    ClientSocketPC[TimerCur->Tag-1]->Host = FormRGBMtx->IPAdd[TimerCur->Tag-1];
   
    if(ClientSocketPC[TimerCur->Tag-1]->Host != "" &&
          ClientSocketPC[TimerCur->Tag-1]->Socket->Connected == false)
    {
          ClientSocketPC[TimerCur->Tag-1]->Active = true;  <<-- 주기적으로 접속을 요청하는 루틴
    }
    */
    
     // 이렇게 수정
     // Server의 PC가 꺼져 있거나 다른 이유에서 서버와 연결이 되지 않을 경우
     // Client의 Active의 상태를 true를 설정 한다 하더라도 Server와 연결이 안되기 때문에
     // 아래와 같이 사용 하면 될 듯 합니다.
     if( ClientSocketPC[TimerCur->Tag-1]->Active == false)
    {
          ClientSocketPC[TimerCur->Tag-1]->Active = true;
    }
     
     if(ClientSocketPC[TimerCur->Tag-1]->Socket->Active == false)
    {
            화면에 오프표시      
    }
    else
    {
            화면에 온표시      
    }

}

궁금이 님이 쓰신 글 :
: 9개의 클라이언트 소켓을 1초 단위로 각각 다른 컴퓨터 서버 소켓과 연결을 시도하고 체크 하는 프로그램을 짜고있습니다
:
: 아래 답변에 여러분이 도와주셔서
: 다른 에러들은 잡았는데 프로그램 실행 한 5분쯤 지나니 또 다음과 같은 에러가 ㅠㅠ
:
: 9개중에 제대로 통신하여 연결된 곳은 상관없는데
: 응답이 없는 IP 에 계속 커넥팅 요청을 해서 에러가 나는것 같습니다
:
: void __fastcall TDataModuleComm::PCCheckTimerTimer(TObject *Sender)
: {
: //    PCCheckTimer->Enabled = false;
:     TTimer *TimerCur = static_cast<TTimer *>(Sender);
:
:     ClientSocketPC[TimerCur->Tag-1]->Host = FormRGBMtx->IPAdd[TimerCur->Tag-1];
:
:     if (ClientSocketPC[TimerCur->Tag-1]->Host != "" && ClientSocketPC[TimerCur->Tag-1]->Socket->Connected == false)  ClientSocketPC[TimerCur->Tag-1]->Active = true;  <<-- 주기적으로 접속을 요청하는 루틴
:
:     if      (ClientSocketPC[TimerCur->Tag-1]->Socket->Connected == false) {
:         화면에 오프표시        }
:     else{
:         화면에 온표시        }
:
: //    PCCheckTimer->Enabled = true;
:
: }
:
: 타이머 한개로 for문으로 9개 클라이언트를 붙이는게 부하가 있을까 싶어 타이머를 9개 불러서 사용했습니다
: 근데 아래와 같은 에러는 당췌 ㅠㅠ
: 도와주세요~

+ -

관련 글 리스트
60039 소켓 에러 좀 봐주세요~ 궁금이 1184 2010/01/29
60042     Re:소켓 에러 좀 봐주세요~ 오렌지78 936 2010/01/29
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.