DOBON.NET DOBON.NETプログラミング掲示板過去ログ

FTPでのget後のdelについて

環境/言語:[Win 2000 Pro VB6.0]
分類:[VB6以前]

いつもお世話になります。

VB6.0にてFTP送受信するプログラムを作成しており
@サーバーからファイルの受信(get)
Aサーバー上のファイル(先ほど取得したコピー元)を削除(del)
Bサーバーから取得してきたファイルを更新
C Bにて更新したファイルをサーバーへ送信(put)

ということが実現したくPG作成をしたのですが
※FTP部分のコーディングは書きアドレスでのサンプルをほぼ流用
http://www.red.oit-net.jp/tatsuya/vb/WinInet.htm

C部分でputの処理が出来ません。
 ※どうやら12003というコードを返してきていることはわかりました。
  現在調査中

上記までの処理でおかしいと思いサーバーの削除したファイルの
あるフォルダーを除いてみると、消したはずのファイルが消えて
いなく、開こうとしても下記エラーメッセージが出力されます。

************************************************************
パス/ファイル名 が見つかりません。ファイル名およびファイルの
保存場所が正しいかどうか確認してください。[ファイル]メニューの
最近使用したファイルの一覧からファイルを開こうとしている場合は、
そのファイルの名前が変更されていないこと、移動または削除されて
いないことを確認して下さい。
************************************************************

そしてその後数十秒するとなぜだかファイルが消えます。
プログラムなのでこういった症状が発生するのかと思い、
コマンドプロンプトにて同じようにftpコマンドにてget
した後にdelすると同じような症状になります。

ちなみにdel単体で実行した場合はファイルはすぐに消えて
います。

FTPコマンドでgetしたサーバーのファイルをdelしようと
した時におかしいようです。

この辺りのことに詳しい方がおられましたら宜しくお願い
します。
■No19681に返信(こうさんの記事)

> ということが実現したくPG作成をしたのですが
> ※FTP部分のコーディングは書きアドレスでのサンプルをほぼ流用
> http://www.red.oit-net.jp/tatsuya/vb/WinInet.htm

老婆心ながら「PG」はあまり一般的な用語ではないような気がします。
(一応通じることは通じますが)
プログラムであれば(オレオレ用語を使わずに)プログラムと書いた方が変な誤解を
招かずにすむのではないかなと思いました。

> C部分でputの処理が出来ません。
>  ※どうやら12003というコードを返してきていることはわかりました。
>   現在調査中

これでしょうか。
http://support.microsoft.com/kb/168492/ja
「ftp 12003」で検索したらすぐ見つかりましたが…

> 上記までの処理でおかしいと思いサーバーの削除したファイルの
> あるフォルダーを除いてみると、消したはずのファイルが消えて
> いなく、開こうとしても下記エラーメッセージが出力されます。

「消したはずのファイルが消えていない」ことを確認した手段はどうされましたか。
メッセージから判断するに、本当は消えているのだけどそれが確認できていないだ
けなのかもしれません。
サーバーの OS と「消えている」ことを確認した方法について教えてください。
■No19681に返信(こうさんの記事)
> そしてその後数十秒するとなぜだかファイルが消えます。
かなり前に、同様の現象で悩みましたので・・・NT4.0サーバ+FTPサーバでした。60秒は、ファイルがあるような挙動でした。
NTworkstation+FTPサーバではそんなことはなくて、すぐ消えることがわかったので、(プリンタスプーラーとしてこちらを使いました)

ぽぴ王子さんの質問が、重要なカギかと思いました・・・スミマセン、割込みで・・
ぽぴ王子さん y4yamaさん
お返事ありがとうございました。

>消したはずのファイルが消えていない」ことを確認した手段はどうされましたか。
>メッセージから判断するに、本当は消えているのだけどそれが確認できていないだ
>けなのかもしれません。
>サーバーの OS と「消えている」ことを確認した方法について教えてください。

詳しく書いていなくて申し訳ないです。
自分が消えていないと判断したのはサーバーにネットワークドライブの接続で
接続してフォルダをエクスプローラーにてみていてプログラムの実行後に
(getののちにdel後に)フォルダの中をみたら消したと思っていたファイルが
のこっていて開こうとしても開けなかった(前述)ことをもって消えていないと
判断しています… でもこの確認方法がおかしいのでしょうか?

y4yama さんはこの症状は結局その環境では解決しかったのでしょうか?
よければ教えて下さい。

ちなみに今サーバーとみたてているのはWINNT4.0 SERVER です。

宜しくお願いします。
■No19684に返信(こうさんの記事)

> 自分が消えていないと判断したのはサーバーにネットワークドライブの接続で
> 接続してフォルダをエクスプローラーにてみていてプログラムの実行後に
> (getののちにdel後に)フォルダの中をみたら消したと思っていたファイルが
> のこっていて開こうとしても開けなかった(前述)ことをもって消えていないと
> 判断しています… でもこの確認方法がおかしいのでしょうか?

ということは、エクスプローラーの一覧には表示されているが、開こうとしたら
前述のエラーが出た、ということですね。
その場合に、F5 キーを押して一覧を最新の状態にしてみたらどうでしょう。
一覧が更新されるまでには多少タイムラグがあると思うので。
ぽぴ王子さん

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

>F5 キーを押して一覧を最新の状態にしてみたらどうでしょう。

上記も確認してみたのですがファイルがのこったままの状態です。

追記ですが、先ほどまでのテスト結果でWIN2000 pro のFTPサーバー
に同様の操作をしたところ問題なく消えてくれます。

やはりサーバー側のOSの問題なのでしょうか???
>かなり前に、同様の現象で悩みましたので・・・NT4.0サーバ+FTPサーバでした。60秒>は、ファイルがあるような挙動でした。

引き続き調査してみます。
■No19686に返信(こうさんの記事)
> やはりサーバー側のOSの問題なのでしょうか???
あらぁ〜NTでしたか。 更に悪い情報ですが、クライアント側のUNIXでFTPのls,Dirを発行したら、その時点から60Secとか消せないようになった覚えが・・・
NTのFTPサーバが賢く、ListのあとGetされるのだったらすぐ消えたらまずい・・とかの考慮があったのでしょうねぇ〜解決はしなかったです。FTPサーバの設定でタイムアウトの秒数を0とか1とかにできればいいですが・・(未確認です)
■No19686に返信(こうさんの記事)

> >F5 キーを押して一覧を最新の状態にしてみたらどうでしょう。
>
> 上記も確認してみたのですがファイルがのこったままの状態です。
>
> 追記ですが、先ほどまでのテスト結果でWIN2000 pro のFTPサーバー
> に同様の操作をしたところ問題なく消えてくれます。

むむむ、ということはやはり y4yama さんも書かれていますが、NT の FTP サーバ
の仕様(不具合?)のようですね。

同じ OS で別の FTP サーバソフトウェアで試してみて、正常に動くようであれば
確定かと思います。
…と、別の FTP サーバソフトウェアで運用…はダメですかね。やはり。
ぽぴ王子さん y4yamaさんいろいろありがとうございました。
とりあえずFTPソフトの仕様みたいなので一応納得いきました。
代替策を考えてみます。

とりあえず解決とします。

ありがとうございました。 _(_ _)_
解決ボタン忘れ
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板