VC6 FTP転送のエラー返却値を拾いたい


大木  2010-08-23 18:10:59  No: 71887

よろしくお願いします。

開発環境
VC6 SP6
XP Pro SP3

対応目的環境
Windows XP
Windows Vista
Windows 7

ファイルを端末にFTP転送しようとしているのですが、
MFCのputfileを使用して転送を行ったところ、
レスポンスコード550が返却されても putfileの返却値を正常と受け取ってしまい困っています。(Wiresharkにてパケットにて確認)
XP Home,Vista,Windows 7にて発生。

wininet.h  FtpPutFile を使用してみましたが、
私の開発環境では、レスポンスコード550でエラーという結果を取れますが、
XP Home,Windows 7 Ultimateでは、正常  という返却値になってしまいます。

FTP転送先の端末は、
FTP転送によりiniファイルを受け取ると
設定ファイルであるかファイルの中身を確認し、
正常であれば受入、異常であればファイルを受け入れないという動作をします。

下記URLのレスポンスコード、421以降全ての場合で発生しています。
ttp://www.atmarkit.co.jp/fnetwork/rensai/netpro10/ftp-responsecode.html
FTP転送に失敗した場合に、
返却値にエラーを取得する方法がありましたら、
教えてください。

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


のと  2010-08-24 09:24:53  No: 71888

まず、XP homeとWindows7で試したわけではないので了承願います。
当方の環境はWin2000SP5です。(そろそろやばい)

もう少し詳しくお願いできますか?
レスポンスコードについては確認していませんので整理させて下さい。

まず、MFCのPutFileというのは
BOOL CFtpConnection::PutFile(...)
のことで良いですか?
戻り値はBOOL値で了解ですよね?(0:エラー  0以外:正常)
提示のHPだと、421以降がエラーで、それより前は正常値に
見えるんですけど。

簡単に試せそうな「ディスク容量の問題で実行できない」を
実行してみましたが、戻り値はエラー(戻り値は0)
GetLastError()の値はディスク容量が不足になりました。(値失念)

ちょっと酔ってるので、間違いあったら補足お願いします。


大木  2010-08-24 18:31:38  No: 71889

>>のとさん
おっしゃるとおり、
BOOL CFtpConnection::PutFile(...)  を使用しています。
戻り値はBOOLです。

URLの421以降はエラーという認識は一致していると思います。
実際にWiresharkで
Response : 550 Invalid file.
BOOLは1が入ってしまうという状態です。

す。


大木  2010-08-25 21:12:03  No: 71890

現象の発生する条件が分かりました。

今まで、
開発環境としている、 
XP Pro SP3 では、
Response : 550 Invalid file.
返却値 0 と受け取っていたのですが、
IEのバージョンをあげたところ現象が発生するようになりました。
Version 6.0.2900.5512  →  8.0.6001.18702 

IEのバージョンを変えることによって
FTPの返却値とFTP関数の返却値に差異が出るという
情報を見たことがないのですが、
どなたか情報をお持ちではないでしょうか。


のと  2010-08-27 10:03:46  No: 71891

BOOL CFtpConnection::PutFile
の所でブレークしてF11で進めると分かりますが
APIのFtpPutFile()を呼び出してるだけです。

提示のページだと「550」は
550 Requested action not taken. 
要求されたリクエストはアクセス権限やファイルシステムの理由で実行できない

>XP Pro SP3 では、
>Response : 550 Invalid file.
何か違う気が・・・。

最小限で再現できるコードを提示してみてはどうでしょう。
エラー状態は、出来ればディスク容量不足の552番が簡単なんですけど。


追記です  2010-08-27 10:09:05  No: 71892

単にログインユーザーのアクセス権の問題では
無いでしょうか?


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

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






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