FTPサーバーの搭載していないサーバーに対して接続を要求して、
失敗した場合の後処理について教えて下さい。
(この時、Winsockで同じサーバに接続中です。)
以下で接続を要求します。要求時間は1秒です。
With Form1.Inet1
.Protocol = icFTP
.AccessType = icDirect
.UserName = ユーザー名
.Password = パスワード
.RemoteHost = IPアドレス
.Execute
End With
ここで、接続失敗(タイムアウト)した後は、
どのような後処理をすれば、よいでしょうか?
Form1.Inet1.Execute , "QUIT"
→フリーズします。
Form1.Inet1.Execute , "CLOSE"
→フリーズします。
Form1.Inet1.Cancel
→次に接続可能な局に接続しようとすると(上記構文箇所で)フリーズする。
何もしない。
→次に接続可能な局に接続しようとすると(上記構文箇所で)フリーズする。
以上、
よろしくお願いします。
原因は分かりませんが、一般的にInetは使い勝手が悪いので、WinInetで組んではどうでしょうか。下記サイトFTPクライアントのサンプルがあります。
エラー後はなにもしなくて大丈夫です。
----
ただ、昔聞いた話なのですが、
UserName、Passwordを設定したあとで、RemoteHostに代入を行ってはいけない。
らしいのです。理由は知りません、、、、。
RemoteHostの設定をUserName、Passwordの前に行ってください。
御提示のソースのRemoteHostの位置だけ変えて実験したところ、問題なく動きました。
(一度、接続を失敗させ、その後、別のホストに正しく接続できる)
元のソースのままだと、正しいホストへの接続が成功したり失敗したりで動作が安定しない感じでした。
----
情報源なくてすいません。http://q.hatena.ne.jp/1211781491
回答有難うございましす。
ご提示頂いた変更を実施しましたが、(接続可能なホストへの)再接続の際にフリーズが発生しました。
なお、接続不可能なホストへ再度、接続処理を行っても、エラーになるだけで、フリーズはしていませんでした。
回答有難うございます。
今から変更して、検査のやり直しとなると時間がないため、
Inetコントールを使用する方針としたいと考えております。
対策が不可能ということが示されれば、作業時間を別途、用意出来るのですが。