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
[22904] Re:TClientSocket관련 문의
유영인.Chris [cuperido] 1328 읽음    2002-11-28 16:15
보여주신 소스만으로 어떻게 다시 실행을 시키시는지 알 수는 없지만요.

만약, 어플리케이션을 다시 실행시키시고 싶으시다면, WinExec로 다시 호출을 하신다음에 Application을 종료 시키시면 될 것 같습니다. (가장 무식하고 쉬운 방법이지요)

그리고, 타이머 같은 것으로, 10초면 10초 정도로 일정시간 정도로 다시 시도를 하는 루틴이 필요할 것 같습니다. 아마도 아래 소스는, 접속이 끊기면 한번 error 가 나고, 재 시도 후에 다시 에러가 나면, 무응답 상태로 빠질 것 같네요.

또한, 서버측이 다운이 잘 되는 상황이라면, 연결이 되어도 물리는 경우가 생기므로, 시그널을 정하신 다음에, 그 시그널 까지 확실히 왔는지, 아니면 접속을 끊고 재 연결하는 루틴도 필요할 것 같습니다.

또한, ClientSocket 보다 Indy의 TCP 컴포넌트를 사용하시는 것이 좋을것 같습니다. 안정성과 접속 면에서 좀 뛰어나거든요.


이의호 님이 쓰신 글 :
: 안녕하세여.
:
: Builder초보입니다.
:
: TClientSocket을 사용해서 서버와 통신을 하고 있는데여...
:
: 임의로 제가 서버 프로그램을 죽였을때
:
: 클라이언트 프로그램에서 socket error가 뜨게 되는데여....
:
: 이 때, 클라이언트 프로그램에서 socket error에 관련된 메세지 라든지
:
: 이런것들을 처리해 주고 서버와의 connection 끊김 상태로 있게 되는데여...
:
: 저는 이 끊김 상태에 있다가 다시 서버 프로그램이 살아나게 되면 사용자의 조작없이도
:
: 클라이언트에서 자동으로 서버에 접속을 해서 다시 데이타를 주고 받도록
:
: 클라이언트 프로그램을 만들고 싶거든여....
:
: 그래서 여러가지 시도를 해 봤는데.... 잘 안되서 어떻게 하면
:
: 자동으로 다시 서버와 connection을 맺고 데이타를 주고 받도록 할 수 있는지
:
: 여러 고수님들의 도움을 받고자 이렇게 글을 올립니다.
:
: 아래의 코드가 제가 소켓 에러시 처리하는 부분을 만든건데여...
:
: 잘 안되여... 바보 아니냐고 욕하지 마시고 방법을 알려주심 고맙겠습니다.
:
: 그럼 이만
: ---------------------------------------------------------------------------
:
: void __fastcall TBusForm::ClientSocket1Error(TObject *Sender,
:       TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode)
: {
:        // 서버를 강제로 죽였을 때 10053 의 에러가 뜨더군여
:
:      if((ErrorCode == 10061)||(ErrorCode == 10053))
:      {
: //        ShowMessage("서버가 응답하지 않습니다.");
:           ErrorCode = 0 ;
:
:           // disconnect시에 처리해 주는 루틴을 넣기 위해 ClientSocket1Disconnect를
:           // 넣었습니다.
:
:           ClientSocket1Disconnect(Sender,Socket) ;
:           Application->Initialize();
:           Application->CreateForm(__classid(TBusForm), &BusForm);
:           Application->Run();
:       }
: }
:
: 참고로 Clientsocket1은 초기에 Enabled 값을 true로 해 놨습니다.
:
: ----------------------------------------------------------------------------
:
:
:
:
:
:
:
:
:
:
:
:
:

+ -

관련 글 리스트
22809 TClientSocket관련 문의 이의호 900 2002/11/23
22904     Re:TClientSocket관련 문의 유영인.Chris 1328 2002/11/28
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.