Q&A

  • 소켓 연결시..
안녕 하세요..

서버와 클라이언트 프로그램을 짜는 중에..

모르는 부분이 있어서 이렇게 글을 올립니다.

서버에 클라이언트가 연결할때, 만일에 서버가 동작을 하지 않는 상태에서

클라이언트가 접속을 시도했을 경우, 바로 에러가 발생을 하더라구요..

그래서, 클라이언트가 접속을 시도하다가 실패했을 경우 에 대해서 처리를 할려구

하는데 어떻게 해야하는지에 대해서 알고 싶어서 이렇게 글을 올립니다.

ClientSocket1.Open;

이렇게 클라이언트가 서버에게 접속을 할경우, 실패했을 때에 대한 처리에 대해서

알고 싶어서 ... 자체적인 메시지를 띄우고 싶어서 그럽니다..

그럼 .. .좋은 하루 보내세요.
4  COMMENTS
  • Profile
    히히 2005.02.11 23:49
    ClientSocket의 OnError 이벤트 핸들러를 다음과 같이.....

    procedure TForm1.ClientSocket1Error(Sender: TObject;
      Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
      var ErrorCode: Integer);
    begin
      ErrorCode := 0;
      // Something to do...........
      Socket.Close;
    end;


  • Profile
    송인화 2005.02.12 02:16
    안녕 하세요..

    답변 감사 드립니다..

    OnError 이벤트를 처리하니깐.. 알수가 있더군요..

    한가지 더 궁금한게 있어서 이렇게 글을 올립니다 .

    OnError에서 처리를 하면 알 수 있지만..

    VC에서는 Connect함수의 반환값으로서 연결에 실패인지 알 수가 있더군요..

    그래서.. 반환값으로서 알수 있는 방법이 있나 해서.. 다시 부탁 드립니다..

    제가 할려구 하는게..

    ClientSocket1.Open 이 실패 했을 경우..

    다른 IP를 입력해서 다른 서버에게 접속할려구 하는데..

    어떻게 해야 될지 모르겠습니다..

    부탁드립니다.

  • Profile
    채팅 2005.02.12 14:52
    clientSocket은 NonBlocking소켓입니다.
    그래서 일단 Open메소드를 부르면 연결이 성공하든 실패하든 다음으로 넘어갑니다.
    시도과정에서 성공하면 OnConnect이벤트가 발생하고 실패하면 OnError이벤트가 발생하죠

    Open으로 성공과 실패를 판가름 하려면 이들 이벤트에서 답이 올때까지 대기하도록 해야 합니다.

    또 다른 방법은 Indy같은 Blocking소켓을 사용하면 Open메소드 하나만으로도 알수 있습니다.

  • Profile
    송인화 2005.02.12 19:42
    안녕 하세요..

    답변 감사 드립니다...

    ClientSocket은 NonBlocking소켓이라구 하셨는데요..  ClientType이라는 항목에 보니깐.

    NonBlocking과 Blocking을 선택가능하더라구요.

    만일에 이렇게 NonBlocking에서 Blocking 소켓으로 Type을 변환했을 경우. ..

    혹시, Open 파일로 알 수가 있는지요 ????

    그리고,  Open으로 성공과 실패를 판가를 하려면 이벤트에서

    답이 올때까지 대기 상태로 만들어야 한다구 하셨는데..

    어떻게 대기 상태로 만들어야 하고, 이벤트에서 응답이 오면..

    그 대기 상태를 어떻게 빠져나가야 하는지에.. 대해서..

    간단하게나마.. 조언 부탁드립니다..

    그럼.. 좋은 주말 보내세요..


    • 신재민
    • 2005.02.13 09:59
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 히히
      2005.02.14 20:08
      Form에서 보면 KeyPreView가 있습니다. 이넘을 True 로 주면 키보드 Input을 Edit보다 Form의 KeyDown에서...
    • 깜장곰
    • 2005.02.13 02:00
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2005.02.14 21:26
      안녕하세요. 최용일입니다. 메인폼의 OnCreate이벤트에서 아래와 같이 해보세요... procedure TForm1...
    • 김상균
      2005.02.12 18:39
          TPanel((Sender as TImage32).Parent).Color := clActiveCaption;
    • 이중철
      2005.02.14 18:04
      지금 보면 ImgCenter의 Parent를 설정하지 않았네요 설정하지 않으면 (Sender as TImage32).Parent는 nil...
    • nilriri™
      2005.02.12 10:36
      '파일 다운로드' 라는 제목의 윈도우가 생성되는지 감시했다가 핸들값을 얻어다가...프로세스를kill하시면 ...
    • 송인화
    • 2005.02.12 05:15
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이중철
      2005.02.12 09:15
      strText[1] => A strText[2] => B strText[3] => C 어떤것을 원하나요? for i := 1 to Leng...
    • 송인화
      2005.02.12 18:18
      답변 감사합니다. ^^ 즐거운 주말 보내세요~
    • 김종현
    • 2005.02.12 03:50
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 이중철
      2005.02.12 09:21
      select sum(수량) as 입고 ...... 만약 입고와 출고를 같이 나오게 할려면 상호 Outer join해야 하는데 ...
    • 김종현
      2005.02.12 21:45
      답변 고맙습니다. 죄송한데 제가 완전 초보라서 그러니 좀 자세하게 가르쳐주심 안될까요? 너무 막막...
    • nilriri™
      2005.02.14 21:46
      RDBMS가 오라클 8i이상이라면 쿼리 한번으로 합계 누계까지 가능할껍니다. 물론 다른 디비라도..union a...
    • 송인화
    • 2005.02.11 22:57
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 히히
      2005.02.11 23:49
      ClientSocket의 OnError 이벤트 핸들러를 다음과 같이..... procedure TForm1.ClientSocket1Error(Sende...
    • 송인화
      2005.02.12 02:16
      안녕 하세요.. 답변 감사 드립니다.. OnError 이벤트를 처리하니깐.. 알수가 있더군요.. 한가...
    • 채팅
      2005.02.12 14:52
      clientSocket은 NonBlocking소켓입니다. 그래서 일단 Open메소드를 부르면 연결이 성공하든 실패하든 다음...
    • 송인화
      2005.02.12 19:42
      안녕 하세요.. 답변 감사 드립니다... ClientSocket은 NonBlocking소켓이라구 하셨는데요.. &...
    • kivalan
    • 2005.02.11 22:55
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2005.02.14 08:03
      안녕하세요. 최용일입니다. WaveOutOpen (@FHandle,FDeviceID,FFmtChooser.WaveFormatEx,DWORD(@WaveOut...
    • kivalan
      2005.02.15 05:01
      계속 답변을 달아 주시는데 고맙고 죄송합니다. 잘 이해가 안가서요.. acmFormatChoose(fc) 넵 이 함수...
    • 최용일
      2005.02.15 17:55
      안녕하세요. 최용일입니다. 몇번 말씀을 드렸는데... 이해를 못하시네요... ㅠㅠ waveInOpen할때 필...
    • kivalan
      2005.02.16 04:40
      앗 이제애 이해를 했ㄴ요. waveInOpen 인자가 타입형포인터줄 알고 헷갈려 했습니다. TACMFormatChooser....
    • 남경만
    • 2005.02.11 17:52
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 남경만
      2005.02.13 02:50
      덕분에 쉽게 끝낼 수 있게 되었네요... ㅎㅎㅎ 저도 어여 질문만 하는 사람이 아니고.. 여러분처...
    • 강재규
      2005.02.12 20:35
      제일 간단한 방법인거 같아서 올립니다. Quickrep1의 Properties에 보시면 Page가 있어요... 거기에 Colu...
    • nilriri™
      2005.02.11 23:10
      기존에 하시던것처럼. 디자인을 하신다음에.. qrdbtext컴포넌트를 놓으시고 데이터셋과 필드명을 연결해...
    • kivalan
      2005.02.11 22:21
      젤 좋은 방법은 퀵레포트에서 다단 출력을 지원하는 것이겠지만요.(이부분은 좀 확인이 필요합니다). 간...
    • 김진태
    • 2005.02.10 07:15
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 델티즌
      2005.02.11 09:14
      자주 실수하는 부분이죠. 변수가 문자인 경우는 문자열이 아닌 문자로 취급해야 합니다. case &nb...
    • 김영미
      2005.06.01 21:01
      한참 헤메다가 답변하신 부분 참조합니다. 정말 감사합니다. 항상 행복하시길 빕니다.( __)꾸벅.
    • kivalan
      2005.02.11 05:33
      말그대로 Ordinal type required 순서적인 값을 가지고 있는 타입만 가능하네요. var abc: Char; begin ...
    • nilriri™
      2005.02.11 23:02
      indy 컴포넌트를 이용하시면 좀더 간단할거 같습니다. 꼭 웹브라우져 컨트롤을 사용하셔야 한다면 행...
    • 이재현
      2005.02.12 10:00
      우선 답변 감사드립니다. ^^; 그렇게 간단한거라면 질문을 올리지 않았죠.. ^^;; 자답 입니다.. ^^; ...
    • nilriri™
      2005.02.12 10:48
      그런 방법도 있었군요...^^; 감사합니다... 보통은 자신만 알고 넘어가버리기 쉬운데...힘들게 알아 내...
    • 박지용
      2005.02.11 19:56
      TThread.OnTerminate Even를 사용하시면 될 것 같네요...^^ 그럼.
    • 파멸의슬픔
      2005.02.11 21:03
      간단 예제 올려드려요... 보시구 하세엽 그럼 이만~
    • 김상균
    • 2005.02.08 04:22
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 난 백만당적이다.
      2005.02.08 01:02
      goEdit를 True로 한 다음 OnCanEditCell 이벤트에서 CanEdit 를 False로 하면 됩니다.  ...
    • 이소룡
    • 2005.02.07 17:48
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 델티즌
      2005.02.08 10:16
      2003에서 이상한 현상들이 많이 발생하고 있습니다. 꼭 델파이의 문제는 아니듯 싶습니다. 2003 서비스팩...
    • 김춘수
      2005.02.07 22:44
      2003에 사용하는데 전혀 이상무입니다. 델파이7, 5 모두 사용 혹시 델파이 원본이 이상한것 아닐까요 ...
    • 난 백만당적이다.
      2005.02.07 20:06
      테이블은 단지 보여지는 기능만 하게 하구요... 저장은 쿼리로 하면 문제가 해결될것같은데요.... 여러개...
    • 무심코
      2005.02.07 22:15
      첨에 델파이를 쓸때 저도 이부분에 대해서 무척 고민에 빠졌습니다. DataSource.AutoEdit 를 false 로 해...