Client에서 Server로 자료를 전송할때, 중간에 연결이 끊겼다던가, Server나 Client의 문제로 전송이 완료되지 않았을때와 같은 사항들에 대한 에러나 예외사항들에 대해 정의해 놓은 게 있는지 궁금합니다.. 전송시에 발생할 수 있는 문제들에 대해 예외처리를 해야 하는데 잘 몰라서 이렇게 올립니다....
전송이 중간에 취소되거나 연결이 종료될때 Exception 이 발생하게 되죠.. Indy가 에러 처리를 Exception으로 하기때문에 불편하시다고 하는분들도 계시지만.. 오히려 편할때도 있답니다.. 고딩이 명확하고 간편해지죠..
FTP 는 두개의 TCP 연결을 사용합니다.. 하는 익히 알고있는 21번 포트의 컨트롤 컨넥션이구요.. 하나는 20번 포트의 데이터 컨넥션이죠.. 파일 전송/리스팅은 데이터 컨넥션으로 이루어집니다. 필요에 따라 연결했다 끊게 됩니다.
이 부분에 대한 처리는 TIdFTP.InternalGet() 과 TIdFTP.InternalPut() 함수가 수행하게 됩니다. 이때 Active Mode(PORT사용)와 Passive Mode(PASV사용) 처리 코드가 있습니다. 이 부분을 TRY...EXCEPT...END 로 잡아주시고 적당한 에러처리르 하시면 됩니다.
만약 정상적인 취소(ABOR 명령 사용시)를 한 경우에는.. ABOR 명령어에 대한 응답을 받기 위해 TIdFTP.GetInternalResponse; 를 통해 그 응답을 받아야합니다. Indy가 Block 타입의 소켓이기 때문이죠..
==> 안녕하세요 BaSTaD 입니다.
전송이 중간에 취소되거나 연결이 종료될때 Exception 이 발생하게 되죠.. Indy가 에러 처리를 Exception으로 하기때문에 불편하시다고 하는분들도 계시지만.. 오히려 편할때도 있답니다.. 고딩이 명확하고 간편해지죠..
FTP 는 두개의 TCP 연결을 사용합니다.. 하는 익히 알고있는 21번 포트의 컨트롤 컨넥션이구요.. 하나는 20번 포트의 데이터 컨넥션이죠.. 파일 전송/리스팅은 데이터 컨넥션으로 이루어집니다. 필요에 따라 연결했다 끊게 됩니다.
이 부분에 대한 처리는 TIdFTP.InternalGet() 과 TIdFTP.InternalPut() 함수가 수행하게 됩니다. 이때 Active Mode(PORT사용)와 Passive Mode(PASV사용) 처리 코드가 있습니다. 이 부분을 TRY...EXCEPT...END 로 잡아주시고 적당한 에러처리르 하시면 됩니다.
만약 정상적인 취소(ABOR 명령 사용시)를 한 경우에는.. ABOR 명령어에 대한 응답을 받기 위해 TIdFTP.GetInternalResponse; 를 통해 그 응답을 받아야합니다. Indy가 Block 타입의 소켓이기 때문이죠..
취소는 TIdFTP.OnWork 에서 수행하시면 됩니다.
FTP 에 대한 응답처리에 더 알고싶으시다면 RFC를 찾아보시면됩니다.
KDDG 만ㅅ ㅔ 이~