Q&A

  • ClientSock접속에러의 처리는
ClientSocket을 가지고 작업중인데

한가지 문제가 있습니다.

인터넷 연결이 않된 상태에서 Acitive=true로하면

에러가 나는 문제인데 더욱 문제 인것은 이 에러 메세지를 안나오게 하는

방법이 없다는 것입니다.



즉,에러가 발생해도

OnError이벤트는 발생하지 않으며 ,

try

active=true

except

방법도 NonBlocking 모드기 때문에 먹지 않아요.



방법좀 없을까요 ?



6  COMMENTS
  • Profile
    이성윤 2000.11.16 09:55
    답변 주신 두분 모두 감사드립니다.



    밤도 늦었는데...



    헌데 첫번째 답변 주신분 말씀대로 그 이벤트를 찾으니 안타깝게

    제공되지 않더군요.

    그리고,두번째 답변주신분의 방법은 제가 질문에 올렸던것처럼

    인터넷 선을 끊고 active=true 를 하면

    약 10초 정도 후에 에러가 나는데

    안타깝게도 onerror 이벤트는 발생하지 않으므로 그 방법을 사용할수도 없네요.



    계속적인 관심 부탁드립니다.







  • Profile
    이성윤 2000.11.17 00:01
    error message는 이렇게 뜨네요.



    Project Project2.exe raised exception class EsocketError with message

    "Windows socket error: (11001), on API 'ASync Lookup". Process stopped.

    Use Step or Run to continue ;



    이렇게 먼저 뜨고 확인을 누르고 계속 진행하기 위해 Run (F9)을 누르면



    "Windows socket error: (11001), on API 'ASync Lookup" 라는 메세지가

    다시 뜹니다.





  • Profile
    김상호 2000.11.17 05:55
    아래 에러코드에 의하면 11001 은 서버를 찾을수 없다고 한것 같은데 ASync Lookup 이라고 한것을 보면 전화 접속쪽과도 관계가 있는것 같았요.. 네트워크등록 정보에서 다시한번 TCP/IP쪽을 확인 해보라고 하고 싶군요...

    델파이쪽보다는 네트워크 쪽에서 나는 에러 같아요..





    ****아래는 김동원님의 글을 올린것입니다.*******

    에러 메세지를 정리해서 올립니다.

    10004 (WSAEINTR) [10004] Interrupted system call.

    10009 (WSAEBADF) [10009] Bad file number.

    10013 (WSAEACCES) [10013] Access denied.

    10014 (WSAEFAULT) [10014] Bad address.

    10022 (WSAEINVAL) [10022] Invalid argument.

    10024 (WSAEMFILE) [10024] Too many open files.

    10035 (WSAEWOULDBLOCK) [10035] Operation would block. Check also the DataToSend property of the component (if any).

    10036 (WSAEINPROGRESS) [10036] Operation now in progress.

    10037 (WSAEALREADY) [10037] Operation already in progress.

    10038 (WSAENOTSOCK) [10038] Socket operation on non-socket.

    10039 (WSAEDESTADDRREQ) [10039] Destination address required.

    10040 (WSAEMSGSIZE) [10040] Message too long.

    10041 (WSAEPROTOTYPE) [10041] Protocol wrong type for socket.

    10042 (WSAENOPROTOOPT) [10042] Bad protocol option.

    10043 (WSAEPROTONOSUPPORT) [10043] Protocol not supported.

    10044 (WSAESOCKTNOSUPPORT) [10044] Socket type not supported.

    10045 (WSAEOPNOTSUPP) [10045] Operation not supported on socket.

    10046 (WSAEPFNOSUPPORT) [10046] Protocol family not supported.

    10047 (WSAEAFNOSUPPORT) [10047] Address family not supported by protocol family.

    10048 (WSAEADDRINUSE) [10048] Address already in use.

    10049 (WSAEADDRNOTAVAIL) [10049] Can't assign requested address.

    10050 (WSAENETDOWN) [10050] Network is down.

    10051 (WSAENETUNREACH) [10051] Network is unreachable.

    10052 (WSAENETRESET) [10052] Net dropped connection or reset.

    10053 (WSAECONNABORTED) [10053] Software caused connection abort.

    10054 (WSAECONNRESET) [10054] Connection reset by peer.

    10055 (WSAENOBUFS) [10055] No buffer space available.

    10056 (WSAEISCONN) [10056] Socket is already connected.

    10057 (WSAENOTCONN) [10057] Socket is not connected.

    10058 (WSAESHUTDOWN) [10058] Can't send after socket shutdown.

    10059 (WSAETOOMANYREFS) [10059] Too many references, can't splice.

    10060 (WSAETIMEDOUT) [10060] Connection timed out.

    10061 (WSAECONNREFUSED) [10061] Connection refused.

    10062 (WSAELOOP) [10062] Too many levels of symbolic links.

    10063 (WSAENAMETOOLONG) [10063] File name too long.

    10064 (WSAEHOSTDOWN) [10064] Host is down.

    10065 (WSAEHOSTUNREACH) [10065] No route to host.

    10066 (WSAENOTEMPTY) [10066] Directory not empty

    10067 (WSAEPROCLIM) [10067] Too many processes.

    10068 (WSAEUSERS) [10068] Too many users.

    10069 (WSAEDQUOT) [10069] Disc Quota Exceeded.

    10070 (WSAESTALE) [10070] Stale NFS file handle.

    10071 (WSAEREMOTE) [10071] Too many levels of remote in path.

    10072 (WSASYSNOTREADY) [10091] Network subsystem is unavailable.

    10073 (WSAVERNOTSUPPORTED) [10092] WINSOCK DLL Version out of range.

    10074 (WSANOTINITIALISED) [10093] Winsock not loaded yet.

    11001 (WSAHOST_NOT_FOUND) [11001] Host not found.

    11002 (WSATRY_AGAIN) [11002] Non-authoritative 'Host not found' (try again or check DNS setup).

    11003 (WSANO_RECOVERY) [11003] Non-recoverable errors: FORMERR, REFUSED, NOTIMP.

    11004 (WSANO_DATA) [11004] Valid name, no data record (check DNS setup).

    도움이 되시길 바랍니다....



    ***** 이상 ******



    이성윤 wrote:

    > error message는 이렇게 뜨네요.

    >

    > Project Project2.exe raised exception class EsocketError with message

    > "Windows socket error: (11001), on API 'ASync Lookup". Process stopped.

    > Use Step or Run to continue ;

    >

    > 이렇게 먼저 뜨고 확인을 누르고 계속 진행하기 위해 Run (F9)을 누르면

    >

    > "Windows socket error: (11001), on API 'ASync Lookup" 라는 메세지가

    > 다시 뜹니다.

    >

    >

  • Profile
    이성윤 2000.11.17 19:34
    잊지않고 답변주심 점 거듭 감사드립니다.



    답변주신대로 제 아마 그렇게 컴퓨터가 예외를 발생시켰는지 모르겠네요.



    현재 작업하고 있는 컴퓨터의 인터넷 연결 상황은 ADSL 로 연결되어 있으며,

    제가 말씀드린 에러가 발생하는 경우는 다름아닌 ADSL 케이블 모뎀을 꺼버린 경우거든요.

    때문에,연결이 되어 있을때는 그러한 오류가 않나지만,연결이 끝어져 있으면 오류가

    발생하게 되지요 .



    헌데,그것이 windows쪽에서 발생하는 메세지라도 이것을 않나게 할수 없나요.

    왜냐면 에러 메세지가 너무 멋이 없어서,이러한 오류발생시 제가 만든 메세지

    창이 떠야할것 같아요.



    부탁,부탁 ...



    감사합니다.



  • Profile
    권민홉 2000.11.16 09:22
    이성윤 wrote:

    > ClientSocket을 가지고 작업중인데

    > 한가지 문제가 있습니다.

    > 인터넷 연결이 않된 상태에서 Acitive=true로하면

    > 에러가 나는 문제인데 더욱 문제 인것은 이 에러 메세지를 안나오게 하는

    > 방법이 없다는 것입니다.

    >

    > 즉,에러가 발생해도

    > OnError이벤트는 발생하지 않으며 ,

    > try

    > active=true

    > except

    > 방법도 NonBlocking 모드기 때문에 먹지 않아요.

    >

    > 방법좀 없을까요 ?



    ClientSocket에 혹시 OnReconcileError라는 이벤트가 있지 않나요

    먼저 ReconcileError이란 폼을 프로젝트에 추가하고

    Action := HandleReconcileError(DataSet, '파마메터중하난데 기억이안남', E);

    라고 적어주면 에러발생시 ReconcileError폼에 에러내용이 나타납니다.

    이것이 맞는지?

  • Profile
    김상호 2000.11.16 09:13
    만약 네트워크에 Tcp/ip를 설정하지 않았다면 에러가 생길수 있습니다.

    네트워크등록정보에서 TCP/IP를을 확인해 보세요...



    네트워크가 제대로 설정이 돼어있다면 아래코드로 해결할 수 있습니다.



    제가 테스트한 결과 아래 코드를 이용하면 에러가 표시되지 않을 것입니다.



    procedure TMainF.ClientSocket1Error(Sender: TObject;

    Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;

    var ErrorCode: Integer);

    begin

    ErrorCode :=0;



    end;





    이성윤 wrote:

    > ClientSocket을 가지고 작업중인데

    > 한가지 문제가 있습니다.

    > 인터넷 연결이 않된 상태에서 Acitive=true로하면

    > 에러가 나는 문제인데 더욱 문제 인것은 이 에러 메세지를 안나오게 하는

    > 방법이 없다는 것입니다.

    >

    > 즉,에러가 발생해도

    > OnError이벤트는 발생하지 않으며 ,

    > try

    > active=true

    > except

    > 방법도 NonBlocking 모드기 때문에 먹지 않아요.

    >

    > 방법좀 없을까요 ?

    >