Q&A

  • Indy Client/Server연결중에 강제로 종료된 경우~
해당 클라이언트와 서버에서 익셉션이 발생할지 알았는데...

그렇지 않더군요...

SHIFT+CTRL+DEL을 눌러서 강제로 종료할때 어떤 익셉션도 받지 못하나요?

참고로 클라이언트와 서버 연결동안 클라이언트를 강제로 종료하니깐..

서버 쪽에서 익셉션이 나오긴 하는데...

IdStck에

procedure TIdStack.RaiseSocketError(const AErr: integer);


raise EIdSocketError.CreateError(AErr, WSTranslateSocketErrorMsg(AErr));===>발생

이 부분에서 발생합니다...

어떻게 처리하는지 궁금합니다...

맨날 질문만 올려서 죄송해요~
2  COMMENTS
  • Profile
    이강석 2008.09.30 20:21
    클라이언트 강제로 종료일경우 서버소켓에서 Excute에서

    except
    on E : Exception do
    begin
    if Pos('Socket Error # 10054', E.Message) > 0 then
    begin
    //Client := Pointer(AThread.Data);
    //Clients.Delete(Client.ListInx);
    //Client.Free;

    //해당 서버정보도 List에서 없애준다.
    PeerIP := TIdIOHandlerSocket(AThread.Connection.IOHandler).Binding.PeerIP; {수정본}
    AThread.Connection.DisconnectSocket;
    AThread.Stop;
    //AThread.Data := nil;
    DisconnectServer( PeerIP );
    DrawListServerInfo;
    AddLogError_Memo('Chatting Server Socket Force Close : ' + PeerIP);
    end
    else
    begin
    AddLogError_Memo('IdServerPeerExecute Function Process Messsage : ' + Cmd);
    AddLogError_Memo('IdServerPeerExecute Function Except Messsage : ' + E.Message);
    end;

    end;

    발생하는 군요....그래서 서버쪽에서 처리가 가능하군요

    그런데 서버소켓이 강제로 종료될 경우...인디클라이언트에서도 익셉션이 발생하는거 같긴한데...

    어느 쪽에에서 그 이벤트를 잡아야하는지 궁금하군요...

    물론 소켓에 쓸때 에러가 나서 처리가 가능하긴 하지만....

    서버소켓이 종료되는 순간을 알아낼 수는 없을까요???



  • Profile
    이강석 2008.10.02 03:13
    클라이언트도 마찬가지네요~~~~~쓰레드로 ReadLn하는데 그 Thread의 Excute함수에서 처리하면 되는군요...ㅠㅠ
    • 이강석
    • 2008.09.30 00:21
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이강석
      2008.09.30 20:21
      클라이언트 강제로 종료일경우 서버소켓에서 Excute에서 except on E : Exception do begi...
    • 이강석
      2008.10.02 03:13
      클라이언트도 마찬가지네요~~~~~쓰레드로 ReadLn하는데 그 Thread의 Excute함수에서 처리하면 되는군요.....
    • Jackie
    • 2008.09.29 20:22
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2008.09.29 21:22
      다른 인덱스를 설정하지 못합니다. 명시적으로 index가 0으로 지정되어 있고 Get이나 Set할 때 메소드...
    • 장성호
      2008.09.29 23:34
      최용일님 말씀대로 index는 바꾸지 못하구요 왜 바꾸지도 못하는 index 가 있는 이유에 대해 간단히 ...
    • Jackie
      2008.09.30 00:19
      답변주신 분들 정말 고맙습니다. 님들의 실력에 감탄하게 됩니다. 결국 제가 지금까지 잘못 코딩하...
    • 김상진
    • 2008.09.29 18:41
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2008.09.29 18:51
      WinExec나 ShellExecute등의 함수를 이용해서 프로그램을 실행시키시면 됩니다. WinExec('c:\test.exe...
    • 김상진
      2008.09.29 19:04
      메뉴마다 exe 파일을 다르게 실행시킬려구 하는데요... Sub1 클릭시 test.exe Sub2 클릭시 test2.exe ...
    • 장성호
      2008.09.29 19:14
      동적으로 생성되는 TMenuItem이 여러개인데.. MenuItem의 Click이벤트에서 어떤것을 클릭했는지 구분하...
    • steps
    • 2008.09.29 04:10
    • 1 COMMENTS
    • /
    • 0 LIKES
    • steps
      2008.10.07 03:58
      구글스크립트를 헤메고 다니다가 한번에 돌아오는 Url을 찾았습니다. http://translate.google.co.kr/tr...
    • 유경민
    • 2008.09.27 06:59
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 석주현
      2008.09.27 21:01
      책을 한권 사서 보시는 걸 권해 드립니다. 아니면 안터넷을 찾아 보시면 델파이 관련 pdf 파일을 찾으...
    • 델코이
    • 2008.09.27 05:26
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2008.09.27 05:41
      SN번호가 어쩌고 하는 이야기는 도저히 이해를 못하겠구요... BOX번호는 FormatFloat함수을 쓰시면 됩니...
    • steps
      2008.09.28 20:52
      참고가 될런지요 repeat inc(sn); if sn mod 15 =0 then begin inc(boxIndex); mark...
    • 석주현
      2008.09.27 02:57
      위에 함수 만들어 놓으셨으면 맨위에 Fixed 부분을 누를 경우 그때의 Checked 값을 넣어 주면 될 것 ...
    • 델만세
      2008.09.27 03:08
      안되는데요;;;; 체크조차 안되여.ㅋ.ㅋ 왜이러징.ㅋ.ㅋ
    • 석주현
      2008.09.27 03:13
      아마 인덱스를 잘못 쓰셔서 일 것 같은데요. 음 맨 윗부분은 따로 동작하는 거니 눌렸을 때 먼저 ...
    • 석주현
      2008.09.27 20:58
      아래와 같이 하면 될꺼 같은데요. ㅡ_ㅡ;; procedure StringGrid12.grdListClickCell(Sender: TObje...
    • 심영준
    • 2008.09.26 23:49
    • 1 COMMENTS
    • /
    • 0 LIKES
    • Crazy™
      2008.09.29 22:35
      db자동연결이라고 하셨는데 자동연결보다는 이후에 어떻게 처리를 하실지 고민을 먼저 하셔야 할겁니다. ...
    • 델코이
    • 2008.09.26 22:21
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 장성호
      2008.09.26 23:04
      <!--CodeS--> procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); var barc...
    • 델코이
      2008.09.26 23:22
      딱 맞네요..감사합니다..
    • 석주현
      2008.09.26 19:08
      Row의 카운트에서 - i 이런식으로 해주면 될꺼 같은데요. ㅡ_ㅡ;;
    • 델만세
      2008.09.26 20:46
      아~해결했어요~
    • 델초보
    • 2008.09.26 07:34
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      2008.09.26 12:14
      DB의 목적이 무엇인지 정확히 알아야 조언이 가능할 것 같습니다. 단순히 로그만을 위한것이라면 사실 그...
    • 김영석
    • 2008.09.26 07:10
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 소울해커
      2008.09.26 19:07
      2개파일을 하나로 만든다는게 무슨의미인지... 단순히 1번파일뒤에 2번파일을 가져다 붙인다는 건가...
    • 박상윤
      2008.09.26 23:58
      2개의 파일을 하나로만든 다는 것은 해더파일 을 고쳐야 하고 나머지 데이터를 뒤부분에 붙여야 하지죠...
    • 델만세
    • 2008.09.26 01:01
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      2008.09.26 12:10
      비율을 유지한채 리사이즈를 하시려면 직접 코딩으로 하셔야 합니다.. 가로크기가 더 긴 이미지인지 ...
    • 소울해커
      2008.09.26 18:24
      일정 비율을 유지한다는게... 1. 각 폼마다 이미지컴포넌트의 위치와 크기를 47, 67로 일정하게 잡...
    • 델만세
      2008.09.26 18:37
      아....감사합니다..^^
    • 김경석
    • 2008.09.25 19:45
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      2008.09.25 19:52
      공개되어있습니다...SourceForge 에가셔서 받으세요..
    • 박철우
    • 2008.09.25 19:43
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      2008.09.25 19:56
      http://www.tmssoftware.com/site/diagram.asp 를 참고 하세요 ^^
    • 박성준
    • 2008.09.25 18:27
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      2008.09.25 19:58
      등록되는 시점에서 실행되는 부분이 있는것 같습니다. 그 DLL의 Entry에 해당하는 이벤트를 확인하셔서 ...
    • 박성준
      2008.09.25 23:35
      델파이자체적으로 툴이 있는지 잘 몰라서 검색을 해보니 DLL Export Viewer 프로그램이 있는 것을 확인...
    • 후초보
    • 2008.09.25 03:10
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      2008.09.25 11:07
      메인폼에 하나만 놓으시면 됩니다. 여러개 놓으시면 어차피 나머지는 동작하지 않습니다. 시리얼포트는 ...