タイトル : Re^4: wininet.dllを使用したftpについて 投稿日 : 2010/08/25(Wed) 10:13 投稿者 : エイジ
魔界の仮面弁士様、お返事ありがとうございます。 > エラーの発生箇所は、FtpPutFile の実行時でしょうか? > (InternetOpen や InternetConnect は問題なし?) > エラーというより Private Declare Function InternetOpen Lib "wininet.dll" Alias などの戻り値を見てゼロの場合は、エラーと判断しています。 (ネットで見つけたままのソースをそのまま使用しているため理由は分かりません) InternetOpenの戻り値は13369348、InternetConnectの戻り値は13369352、 FtpPutFileの戻り値はゼロになっています。 戻り値がゼロの場合、その原因を探すため、InternetGetLastResponseInfoで エラーの内容を取得しています。 > IntPtr にしたのではありませんでしたっけ。 ftp関係ではIntegerは使用せずIntPtrを使用したほうがいいということでしょうか。 全てIntPtrにしましたが、結果は変わりません。 > InternetOpen にしても InternetConnect にしても、 > その戻り値はインターネットハンドル(HINTERNET)ですよね。 インターネットハンドル(HINTERNET)かは不明ですが、以下のAPIで取得しています。 ' API定義 Private Declare Function InternetOpen Lib "wininet.dll" Alias _ "InternetOpenW" (ByVal sAgent As String, ByVal lAccessType As IntPtr, _ ByVal sProxyName As String, ByVal sProxyBypass As String, _ ByVal lFlags As IntPtr) As IntPtr Private Declare Function InternetConnect Lib "wininet.dll" Alias _ "InternetConnectW" (ByVal hInternetSession As IntPtr, _ ByVal sServerName As String, ByVal nServerPort As IntPtr, _ ByVal sUsername As String, ByVal sPassword As String, _ ByVal lService As IntPtr, ByVal lFlags As IntPtr, _ ByVal lContext As IntPtr) As IntPtr > > 実行機とftpサーバとのやりとり時にエラーになります。 > Port 21 でのコマンド送受信はできているものの、 > Port 20(等)でのデータ交換に失敗している感じでしょうか。 > > ・今回、INTERNET_FLAG_PASSIVE は使いますか? 使いませんか? > ・サーバー側の FTP アクセスログに、T-01A からの接続は記録されていますか? > ・CE 機用の FTP ツール(SyncFTP等)を使っての送受信はできますか? INTERNET_FLAG_PASSIVEは使用しません。 サーバー側の FTP アクセスログには、T-01Aから[USER]と[PASS]のログは記録されています。 SyncFtpをT-01Aにインストールしました。 接続時と切断時に、[正規表現変換でエラーが発生しました]という メッセージがたくさん表示され、Server側のファイルが全てフォルダになり、名前も Dateも空白になっています。 Localは正常に表示されていますのでアップロードを試しましてが、接続時と切断時に 出る[正規表現変換でエラーが発生しました]が表示されましたが、サーバを直接見ると 正常にアップロードされていました。 以上、よろしくお願い致します。 |