Inetコントロールを用いてFTPサーバ上のファイルの転送を行うプログラムを作成たのですが、エラー処理の方法がわかりません。特にディレクトリ一覧の取得を行う際に時間がかかるらしく、ハングアップしたりしてしまいます。何か良い方法があれば教えて下さい!なお、動作環境はWindowsXP、VB6.0を使用しています。
Inetコントロールでは細かな設定は出来ません。
APIのwininetか、DOSのFTPコマンドを使う事をお勧めします。
ちなみにそのサーバーのハングするディレクトリーには
幾つ位のファイル又はフォルダーがあるのでしょうか。
ねろさん、ご意見ありがとうございます。
現在はテスト環境で実行しているため、
ファイルは10くらいです。
自分なりにもいろいろ原因を探ってみたのですが、
ディレクトリの取得やファイルの転送の際などに処理の完了を待つように、
DoEventsを用いて
Do While Inet.StillExecuting = True
DoEvents
Loop
としていたところ、これが原因でハングアップしているようです。
使用方法として問題があるのでしょうか?
>使用方法として問題があるのでしょうか?
微妙なところです。
http://madia.world.coocan.jp/vb/vb_bbs/200405_04050102.html
ただしこの症状は、ハングアップしているのではなく、
サーバーからの応答が無い為で、原因は他にあるのでしょう。
DoEventsが入っているので他のキーは受け付けるはずです。
ねろさんのご指摘のとおり、
DoEventsではただ応答待ちで
確かにハングアップしているわけではないようです。
ハングアップの原因は他にあるようですね。
エラーの原因を調べたいのですが手図まりの状態です。
ねろさんの最初のご意見の通り
他の手段を考えた方が良いのかもしれないですね。
ありがとうございました。
この様な症状の時1番くさいのは、ファイアーウオールでしょう。
他のFTPソフトではこのサーバーにアクセスできていますか?
返信遅れてすみません。
ハングアップの問題は解決しました!!
どうやらコーディングにミスがあったようです。
しかしまた一つ問題が・・・。
Inetコントロールで転送中の処理のエラーを取得したいのですが
できません。
タイマーでStillExecutingの値を定期的に見に行き、
エラーを取得できないかと考えたのですが、
エラーを出すために、FTPサーバーを途中で無理やりおとしてみても
StillExecutingの値はTrueのままです。
Inetで取得できるエラーを用いたらできるかとも考えたのですが、
うまくいきません。
これってStateChangeイベントの中でひろえないのでしょうか?
何か良い解決方法があれば是非是非ご教授下さい!!!
ツイート | ![]() |