Q&A

  • 소켓의 예외가 Exception에 않걸려여!
안녕하세요.. 델초입니다..



클라이언트 소켓으로 연결을 시킬때 ClientSocket.Active := TRUE; (요때)

예외에 왜 않걸리져..? -_-;;



TRY

ClientSocket.Active := TRUE;

EXCEPT on E: ESocketError do

begin

ShowMessage(E.message);

ClientSocket.Close;

end;

END;



일케 했는데 안걸려여.. 혹시나 ESocketError의 범위에 안걸리나 해서..

EXCEPT절을 욜케(



EXCEPT

ShowMessage('Error');

END;



이렇게두 해봤는데,, 안걸려여.. 그리고, 소켓의 OnError()이벤트에도

안걸리더군요.. 안정적인 어플을 만들고 싶은데,, 왜 않걸리져..

혹시나 다른 이유라도.. 고수님의 조언부탁드립니당..





5  COMMENTS
  • Profile
    이경문 2000.08.16 15:24
    OnError라는 Event에서 처리하세여.....



    델초 wrote:

    > 안녕하세요.. 델초입니다..

    >

    > 클라이언트 소켓으로 연결을 시킬때 ClientSocket.Active := TRUE; (요때)

    > 예외에 왜 않걸리져..? -_-;;

    >

    > TRY

    > ClientSocket.Active := TRUE;

    > EXCEPT on E: ESocketError do

    > begin

    > ShowMessage(E.message);

    > ClientSocket.Close;

    > end;

    > END;

    >

    > 일케 했는데 안걸려여.. 혹시나 ESocketError의 범위에 안걸리나 해서..

    > EXCEPT절을 욜케(

    >

    > EXCEPT

    > ShowMessage('Error');

    > END;

    >

    > 이렇게두 해봤는데,, 안걸려여.. 그리고, 소켓의 OnError()이벤트에도

    > 안걸리더군요.. 안정적인 어플을 만들고 싶은데,, 왜 않걸리져..

    > 혹시나 다른 이유라도.. 고수님의 조언부탁드립니당..

    >

    >

  • Profile
    델초 2000.08.16 22:49
    그건.. ClientType이 ctNonBlock일경우입니당..

    stBlocking 일때는 OnError에서 안걸리더군여.. 그래서여..

    블럭킹모드에서는 얼케 해야해야 하는지여..



    이경문 wrote:

    > OnError라는 Event에서 처리하세여.....

    >

    > 델초 wrote:

    > > 안녕하세요.. 델초입니다..

    > >

    > > 클라이언트 소켓으로 연결을 시킬때 ClientSocket.Active := TRUE; (요때)

    > > 예외에 왜 않걸리져..? -_-;;

    > >

    > > TRY

    > > ClientSocket.Active := TRUE;

    > > EXCEPT on E: ESocketError do

    > > begin

    > > ShowMessage(E.message);

    > > ClientSocket.Close;

    > > end;

    > > END;

    > >

    > > 일케 했는데 안걸려여.. 혹시나 ESocketError의 범위에 안걸리나 해서..

    > > EXCEPT절을 욜케(

    > >

    > > EXCEPT

    > > ShowMessage('Error');

    > > END;

    > >

    > > 이렇게두 해봤는데,, 안걸려여.. 그리고, 소켓의 OnError()이벤트에도

    > > 안걸리더군요.. 안정적인 어플을 만들고 싶은데,, 왜 않걸리져..

    > > 혹시나 다른 이유라도.. 고수님의 조언부탁드립니당..

    > >

    > >

  • Profile
    이경문 2000.08.18 00:08
    블럭킹모드를 쓰는 것 보다

    차라리 Winshoe를 쓰시지요.

    그것이 훨씬 안전하고 송수신되 잘 되고 쓰기도 쉽습니다.

    그럼..

  • Profile
    델초 2000.08.18 00:40
    이경문 wrote:

    > 블럭킹모드를 쓰는 것 보다

    > 차라리 Winshoe를 쓰시지요.

    > 그것이 훨씬 안전하고 송수신되 잘 되고 쓰기도 쉽습니다.

    > 그럼..



    아~~ Winshoe여.. 저두 압니다.. 근데,, 아직 얘기만 들어서 그런데여..

    이거 상용프로그램에서 삽입해서 사용해도 됩니까? -_-; 홈페이지에

    가봤더니.. 이상한 License만 나오던데,, ^_^;;

  • Profile
    조수석 2009.11.19 03:23
    onError에 아래와 같이 하면 잘 됩니다.

    procedure TForm1.ClientSocket1Error(Sender: TObject;
    Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
    var ErrorCode: Integer);
    var
    OrgCode:Integer;
    begin
    OrgCode:=ErrorCode;
    ErrorCode:=0; //// To avoid system error message
    StatusBar1.Panels[0].Text:='소켓 에러 :('+IntToStr(OrgCode)+')';
    end;