- 題名: FTPサーバからのファイル取得
- 日時: 2014/02/21 20:43:54
- ID: 32171
- この記事の返信元:
- (なし)
- この記事への返信:
- [32176] Re[1]: FTPサーバからのファイル取得2014/02/24 14:50:32 [解決]
- ツリーを表示
自己解決致しました。 ご報告させていただきます。 原因 FtpGetFile関数の第6引数(nFlags)の設定が FTP_TRANSFER_TYPE_BINARYのみであったため キャッシュがONになっていた。 対策 INTERNET_FLAG_RELOADを追加で設定することで キャッシュを利用せずに、毎回FTPサーバから 受信されます。
分類:[.NET]
・開発環境 WindowsCE6.0 .NETcompactFramework3.5 VisualStudio2008 C# ・現象 FtpGetFile関数を用いてFTPサーバからファイルを取得しているのですが、 何回も取得していると、FtpGetFile関数がtrueを返しているにも かかわらず、端末からFTPサーバにコマンドが送信されていないという 現象が発生しています。成功するときもあり、失敗することもある ことが厄介です。 ・考察&質問 FtpGetFile関数の定義関係や、パラメータに不適切なものがあるのでは ないかと推測し、pinvokeのサイトの定義と比較してみました。 今回はCE機であるため、そのまま使えないと思うのですが 知識が不足しており、何が間違っているのか正しいのか判断が つかない状況です。 お分かりの方、ご指摘頂けましたら幸いです。 現象が発生している定義 [DllImport("wininet.dll", EntryPoint = "FtpGetFileW", SetLastError = true, CharSet = CharSet.Unicode)] private static extern bool FtpGetFile( IntPtr ulConnect, string strRemoteFile, string strLocalFile, bool bFailIfExist, uint uiFlagsAndAttributes, uint uiFlags, uint uiContext); pinvokeサイトの定義 [DllImport("wininet.dll", EntryPoint = "FtpGetFile", SetLastError = true, CharSet = CharSet.Auto)] [return: MarshalAs(UnmanagedType.Bool)] private static extern bool FtpGetFile( IntPtr hFtpConn, string strSource, string strTarget, [MarshalAs(UnmanagedType.Bool)] bool bFailIfExists, uint nFlagsAndAtrribute, uint nFlags, uint nContext); よろしくお願い致します。