FTPのオープンで Connection Closed Gracefully が発生します

解決


つき  2005-12-20 06:42:49  No: 19322

すみません、初心者の質問です。

FTPのオープンで、Connection Closed Gracefully というエラーが発生しているのですが、原因が分かりません。

以下の状況です。
■上記エラーは数百回に1度発生します(絶対ではありませんが)。
  要は再現性がないという意味です。
■このエラーがいったん発生すると、その後はプログラムを再起動するまで
  ずっと同じエラーが出続けます。
■デバッガオプションのEIdSilentException は入れました。
■Delphi2005 + Windows2003Server
■Indy10

前回のquitが成功していないのでしょうか?
どなたかお分かりになる方いらっしゃいましたら教えてください。

よろしくお願いいたします。


ヘルプやGoogleで検索  2005-12-20 10:12:16  No: 19323

http://www2.alc.co.jp/ejr/index.php?word_in=gracefully&word_in2=reedeirrf&word_in3=zJPa7DCxJ15687987t

1.「Connection Closed Gracefully というエラー」は無い。「Connection Closed Gracefully」は例外でしょう。
2.EIdSilentExceptionと上記の例外は別物。上記の例外はEIdConnClosedGracefully。
3.EIdConnClosedGracefullyをヘルプで調べること。
4.「Connection Closed Gracefully」をGoogleなどで調べること。
全ては調べれば見つかるはず。


つき  2005-12-20 19:21:39  No: 19324

お返事ありがとうございます。

> 1.「Connection Closed Gracefully というエラー」は無い。「Connection Closed Gracefully」は例外でしょう。

そうですね。失礼いたしました。

> 2.EIdSilentExceptionと上記の例外は別物。上記の例外はEIdConnClosedGracefully。
> 3.EIdConnClosedGracefullyをヘルプで調べること。
>

調べると同じようですが?
見方が違うのでしょうか?

 --- EIdException
     --- EIdSilentException
         --- EIdConnClosedGracefully

> 4.「Connection Closed Gracefully」をGoogleなどで調べること。
>
調べたつもりですが、同じような現象(FTPオープン時に当該エラーになる)は見当たりませんでした。それで質問させていただいた次第です。

> 全ては調べれば見つかるはず。

力量不足なので何卒お力をお貸しください。

以上、よろしくお願いいたします。


にしの  2005-12-21 00:19:13  No: 19325

Quitの前にAbortしていますか?(ファイル転送中などの場合)
Connectする前に、Disconnectを発行してもおきますか?
以前に見た現象のようですが、どうやって回避したのか思い出せませんでした。
# 申し訳ない


どやさ  2005-12-21 00:43:53  No: 19326

過去ログ参照
こちらでも、にしのさんが回答しております。
https://www.petitmonte.com/bbs/answers?question_id=799

ちなみにFTPのソース見ておいてください。
私の記憶では ABORT のときに ABORT コマンド送らずに
いきなり Disconnect してたと記憶してますが・・・・


つき  2005-12-21 19:39:53  No: 19327

にしの様、アドバイスありがとうございます!

> Quitの前にAbortしていますか?(ファイル転送中などの場合)

一応、サンプルを参考にして、Connected なら Abort するようにしています。
以下のような感じですね。

----- ここから

    if IdFTP1.Connected then begin
        IdFTP1.Abort;
    end;
    IdFTP1.Quit;

    IdFTP1.Username := sUser;
    …
    IdFTP1.Connect;

----- ここまで

必ず Abort するようにしたほうが安全なのでしょうか?
知識不足で申し訳ございません。

> Connectする前に、Disconnectを発行してもおきますか?

やってみます。
ただ、再現性が低いため確実な検証結果はご報告できないかもしれません。

> 以前に見た現象のようですが、どうやって回避したのか思い出せませんでし> た。
> # 申し訳ない

いえ、本当に助かります。ありがとうございます。
今後ともどうぞよろしくお願いいたします。


つき  2005-12-21 19:51:59  No: 19328

どやさ様、アドバイスありがとうございます!

> 過去ログ参照
> こちらでも、にしのさんが回答しております。
https://www.petitmonte.com/bbs/answers?question_id=799

ありがとうございます!
見逃しておりました。

・・・。

同じ初心者でも迷子の子犬様と私ではレベルが違うようです(汗)。
じっくり読まないと内容が理解できません(泣)

> ちなみにFTPのソース見ておいてください。
> 私の記憶では ABORT のときに ABORT コマンド送らずに
> いきなり Disconnect してたと記憶してますが・・・・

確認いたしました。おっしゃるとおりですね。
ということは、にしの様のアドバイスと合わせて考えてみると
Connect の前には初期化のような意味?で、Disconnectもしくは Abort を
行ったほうが安全、という解釈でよろしいのでしょうか?

あいまいな書き込みで申し訳ございません。
確実に毎回発生するような現象でしたら、検証後にご報告できますのに…。

今後ともどうぞよろしくお願いいたします。


にしの  2005-12-21 20:04:19  No: 19329

Abortは、FTPプロトコルのABORコマンドを発行するものなので、Disconnectでよいかと思います。

try
  try
    IdFTP1.Disconnect;
  finally
    IdFTP1.Connect;
  end;
except
  //接続エラー
end;


つき  2005-12-22 19:35:51  No: 19330

にしの様、アドバイスありがとうございます!

教えていただきましたようにソースを修正し、
問題なく稼動することを確認いたしました。
ついでにかなり細かいトレースも出力するように
しておきました。
何かあったときにネタが取れるといいのですが…。

また、何かありましたらご報告いたします。

このたびは本当にありがとうございました。
今後ともどうぞよろしくお願いいたします。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加