Q&A

  • indy ftp를 이용해서 전송시 발생할 수 있는 에러나 예외사항에 대해..
Client에서 Server로 자료를 전송할때, 중간에 연결이 끊겼다던가, Server나 Client의 문제로 전송이 완료되지 않았을때와 같은 사항들에 대한 에러나 예외사항들에 대해 정의해 놓은 게 있는지 궁금합니다.. 전송시에 발생할 수 있는 문제들에 대해 예외처리를 해야 하는데 잘 몰라서 이렇게 올립니다....
1  COMMENTS
  • Profile
    KDDG_BaSTaD 2004.03.26 20:41


    ==> 안녕하세요 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 만ㅅ ㅔ 이~
    • 김현철
    • 2004.03.26 05:44
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 너구리
      2004.03.26 18:51
      데이타셋의 구성을 이용해서 뿌려주니깐 TField쪽을 보셔야 할거 같은데요.. 저도 저런 현상을 본적...
    • 김현철
      2004.03.26 22:35
      db의 값이 0입니다.... TField의 자료형도 real타입으로 해 봤는데도... 결과가 같습니다.. 임시로 lable...
    • 류동완
    • 2004.03.26 05:13
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 장덕곤
      2004.03.26 07:39
      에스큐엘 익스플로러에서  잡혀져 있는 알리어스를 더블클릭하신후 sql 란에서 select * from...
    • 너구리
    • 2004.03.26 03:14
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2004.03.26 10:11
      안녕하세요. 최용일입니다. 둘 다 메소드를 재정의 할 때 쓰입니다. override는 똑같은형태의 메소드...
    • 너구리
      2004.03.26 18:41
      그렇다면 reintroduce를 쓰면 overroad는 안써도 되나요?? 헬프에 보니깐 overroad와 reintroduce를 같...
    • 최용일
      2004.03.26 20:33
      안녕하세요. 최용일입니다. override와 overload는 다른 것입니다. overload는 같은 이름을 가지며 ...
    • KDDG_BaSTaD
      2004.03.26 23:45
    • 왕초보
    • 2004.03.26 02:22
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 한주영
      2004.03.26 18:37
      멀티유저환경이라면 위험한 방법입니다. Select max(num) from.. 으로 들어가는 방법역시 위험합니다. ...
    • 너구리
      2004.03.26 02:43
      num 이란것이 PK라면 recordCount보다는 select max(num) from table_name 이렇게 구해 오셔야 될겁...
    • 왕초보
      2004.03.26 21:28
      답변감사합니다. max값 구해서 한다면.. 아래처럼 하니까 type mismatch 에러가 생기는데요.. 에구.. 코...
    • 돌아버려
      2004.03.26 02:39
      컬럼 type을 autoincrement로 설정하시면... 레코드 추가 할때 자동증가 되는걸로 기억하는데요.^^; ...
    • Galaxy
    • 2004.03.26 00:17
    • 3 COMMENTS
    • /
    • 0 LIKES
    • KDDG_Cali
      2004.03.26 00:47
      .DB 는 원래 database 화일 .PX 는 Primary key 화일 .MB 는 BLOB 필드가 있는경우에 생성되는 화일로 알...
    • 강동균
      2004.03.26 01:21
      전에 저도 궁금하여 김영대님께 여쭈었더니 다음과 같이 보내주시더군요. 몰라도 되구요.  참...
    • Galaxy
      2004.03.26 02:05
    • 메디컴
    • 2004.03.25 23:29
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김병윤
      2004.03.26 02:19
      아래 소스처럼 바꿔 보셨어요? procedure TForm1.SpeedButton2Click(Sender: TObject); var  &...
    • 너구리
      2004.03.25 22:04
      DB Class에서는 클래스만 구현해주고. 각각의 유닛에서 객체를 만들어서 사용해야 겠지요.. Form1 과...
    • 연기훈
      2004.03.25 22:19
      네.. 폼에서 클래서 정의 및 생성하고 사용합니다.. DB module에서 Query, DataSouce 컴포넌트를 공유...
    • 너구리
      2004.03.25 22:38
      DB Class파일하고 적용된 부분을 보여주세요.. 그리고 에러 메세지도....모여주시면 답을 드리는데 도움...
    • 왕초보
    • 2004.03.25 21:04
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 꿈의대화
      2004.03.25 23:46
      .
    • 왕초보
      2004.03.26 00:23
      답변 감사합니다. shellApi를 통해서 하면 될 것 같다고 하신 김문수라는 분이 계시네요. 근데 제가 워...
    • KDDG_Apine
      2004.03.26 05:59
      안녕하세요.. 제가 알고 있기로는 인디에 있는 mailClient로 smtp의 서버 주소 그리고 포트  ...
    • 가이아
    • 2004.03.25 20:16
    • 1 COMMENTS
    • /
    • 0 LIKES
    • KDDG_BaSTaD
      2004.03.26 20:41
      ==> 안녕하세요 BaSTaD 입니다. 전송이 중간에 취소되거나 연결이 종료될때 Exception 이 발생하...
    • 채태숙
      2004.03.25 20:18
      select aaa[--필드명], count(*) from table1 group by aaa having count(aaa) > 1 이렇게 하시...
    • 박수영
      2004.03.25 19:46
      Key값이 아니라면 select하는 것이 가장 정확하지 않을까요???
    • 연기훈
      2004.03.25 19:09
      하나의 중복 값만 찾으면 되는건지...? group by 로 그룹 잡고 count 해주면 중복 데이타 수랑 다나오자...
    • Galaxy
      2004.03.26 00:10
    • 너구리
      2004.03.25 20:30
      저 한테 있기는 한데 델파이 6버젼이 있기는 한데.. 버젼이 맞을지..그리고 FreeWare라면 드릴께요.. ...
    • 박대원
    • 2004.03.25 02:02
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 권영길
      2004.03.25 02:15
      http://www.techvanguards.com/products/eventsinkimp/ 여기서 제공되는 툴을 써서 이벤트관련 TLB를 생성...
    • 박대원
      2004.03.25 03:34
      답변 감사합니다. EventSinkImp 라는 프로그램을 설치하고 TypeLibrary 에서 Import 해줬습니다. 그...
    • 권영길
      2004.03.25 04:45
      제가 자세한건 살펴볼수 없으나 EventSinkImp에서 생성해주는 유닛을 사용할 경우 대략의 스토리는 이렇습...
    • 1학년
    • 2004.03.25 01:04
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 박수영
      2004.03.25 01:26
      우선 출력할 부분이 열자리면 열자리만큼을 스패이스로 채운뒤에 숫자의 길이만큼 for i := lengt...
    • 김승재
    • 2004.03.25 00:47
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 최성준
      2004.03.25 01:16
      질문1 : 델파이 project - options에서 forms tab에서        &n...
    • 별볼일없는
      2004.03.25 01:10
      저두 초보지만 아주 초보적인 질문이네요.. ㅋㅋ 1번건은 메인 메뉴에 porject 에서 options 들어...
    • 김승재
      2004.03.25 18:26
      ㅎㅎ
    • 서기원
      2004.03.30 02:22
      벌써 답을 찾으셨을 것 같긴 한데... ActiveX의 Destory 메소드에서 처리하시면 될겁니다. 그럼..
    • 김기원
      2004.03.25 01:17
      QRCompositeReport 를 사용해보세요... QuickRep 를 한 폼에 두개 만드시고 각각 QuickRep에 Grid1의 내용...
    • 장덕곤
      2004.03.26 07:43
      이방법도 있을거같네요 프린터버튼을 클릭할때 따로 SQL을 작성해서 돌리는 겁니다 sql은 select * from...
    • 송종환
    • 2004.03.25 00:21
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 이강승
    • 2004.03.25 00:06
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 너구리
      2004.03.25 02:52
      그런데 프로그램 업데이트를 하면 파일을 카피하더라도 이미 실행중인 프로그램하고 이름이 같을텐데.. ...
    • KDDG_Cali
      2004.03.25 00:18
      폼의 FormPaint 부분에서 처리하심이..... 그럼.. GG KDDG_
    • 이강승
      2004.03.25 00:47
      답변감사합니다. 하지만 심각한 에러가 발생하더군요 ;; 다음의 방법으로도 가능하네요. 조잡한 방법같은...
    • 김기원
      2004.03.25 01:40
      FormCreate 이벤트에서 PostMessage 를 이용 해보세요...