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
[74890] TCP/IP 소켓 통신 관련 질문
newrise [youkdy6] 3604 읽음    2018-04-17 20:48
안녕하세요. 한창 삽질중인 신입입니다.

같은네트워크 상에 다른 장비[Server] -- PC[Client]프로그램
위와 같은 구성이고
PC 프로그램에서 다른 장비에 붙어서 데이터를 주고 받는 프로그램을 짜고 있습니다.

서버쪽에서 일반적인 종료[정상적으로 연결 끊기]시 Timer를 통해 다시 연결을 시도합니다.
하지만, 랜선 뽑기, 서버쪽 전원 OFF 시에는 프로그램이 인지를 못하고 있습니다.

Q. Errorcode로 처리가 불가능한지 알고 싶습니다. 만약 방법이 없다면 어떤 방법이 효율적인지
배우고 싶습니다.

void __fastcall TForm2::Timer2Timer(TObject *Sender)
{
    char tmp_buf[1024];
    char msg_buf[20];
    int size = 0;
    int i=0;
     
    if(COM_FLAG)
    {
        btn_Connect->Caption   = "연결중";
        ClientSocket1->Address = P_IP;
        ClientSocket1->Port    = P_PORT;
        ClientSocket1->Open();

    }
}
//---------------------------------------------------------------------------

void __fastcall TForm2::ClientSocket1Connect(TObject *Sender,
      TCustomWinSocket *Socket)
{
    btn_Connect->Caption = "Conneted OK";
    TCP_Count = 1;
    COM_FLAG = 0;

}
//---------------------------------------------------------------------------

void __fastcall TForm2::ClientSocket1Disconnect(TObject *Sender,
      TCustomWinSocket *Socket)
{
    btn_Connect->Caption = "Disconnected";
    TCP_Count = 0;
    AP_COM_FLAG = 1;
 
    //reconnetion_count = 1;
}
//---------------------------------------------------------------------------

void __fastcall TForm2::ClientSocket1Error(TObject *Sender,
      TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode)
{
    // 클라이언트가 열려 있지 않은 서버 소켓에 대해 접속 시도하여도 에러 메시지창 표출 하지 않음
    btn_Connect->Caption = "Disconnected";
    TCP_Count = 0;
    COM_FLAG = 1;

    TClientSocket *SocketCur = static_cast<TClientSocket *>(Sender);

    if (ErrorCode == 10060)     ErrorCode = 0;
    if (ErrorCode == 10061)     ErrorCode = 0;
    if (ErrorCode == 10049)     ErrorCode = 0;
    if (ErrorCode == 10053)     ErrorCode = 0;
    if (ErrorCode == 10038)     ErrorCode = 0;
    if (ErrorCode == 10065)     ErrorCode = 0;

    //SocketCur->Socket->Disconnect(SocketCur->Socket->SocketHandle);
    SocketCur->Active = false;
    SocketCur->Socket->Close();
 
}
//---------------------------------------------------------------------------

+ -

관련 글 리스트
74890 TCP/IP 소켓 통신 관련 질문 newrise 3604 2018/04/17
74891     Re:TCP/IP 소켓 통신 관련 질문 라스코니 3461 2018/04/18
74892         Re:Re:TCP/IP 소켓 통신 관련 질문 newrise 3749 2018/04/18
74893             Re:Re:Re:TCP/IP 소켓 통신 관련 질문 라스코니 4106 2018/04/19
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.