• ベストアンサー

VB.NETでFTPプログラム

VB.NETでFTPプログラムを作成しているのですが、 SocketクラスのSendを使って、 そのディレクトリにあるファイル一覧を取得しようと思ってましたが、いざ "NLST"と送ると、 10回に1回位の割合で、返事が返ってきません。 もちろんReciveでサーバーからの返事を読み取っていますが、返事が返ってこないと、そこでとまってしまいます。 なにかよい対策がありましたら、ご教授ください。

質問者が選んだベストアンサー

  • ベストアンサー
  • jun2004
  • ベストアンサー率42% (24/57)
回答No.1

Socket.Availableがゼロの場合は、Reciveを待つループを作ります。ループ内にSleepで10msec程度のウェイトを置いて一定回数以上ループするとタイムアウトするようにしたらどうでしょうか。 FTPサーバによってはコマンド送信からデータ受信のタイミングが微妙な場合がありますので、数種類のFTPサーバでテストされる事をお勧めします。

itodai777
質問者

お礼

お~すげ~ 大変助かりました。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • linuxでのftpクライアントプログラムをつくるには

    Windows(VC++ MFCを使用して)などで ftpクライアントのプログラムを作成することが出来るみたいですが linux(TURBO LINUX 4.0)で同様なことはできないのでしょうか? 具体的には 以下のようなことがしたいためです。 (1) ftpサーバーにlinuxマシンにてクライアントでログイン (2) サーバー上のftpホームディレクトリにあるファイルができるまで周期的に監視 (3) 該当するファイルができたらファイルをクライアント側に転送 (1)~(3)を一回のftp接続状態のまま自動的(プログラム)で行ないたいのです。 VC++ MFCでは,FTPを行なうクラスがいくつかあるみたいですが? どなたかわかりましたら御回答ください。

  • プロキシ経由でNet::FTPを利用する方法

    Net::FTPを利用してサーバ内にあるファイル一覧を取得しようとしています。 use Net::FTP $ftp = Net::FTP->new($hostname); $ftp->login($user,$pass); $file = $ftp->ls($holdr); $ftp->quit; とすれば同一ネットワーク内のファイル一覧は取得できました。ですがこのネットワークはプロキシサーバ内にあるためこのプログラムでは外のホストには接続できませんでした。どうすればプロキシを経由して外のホストに接続することができるでしょうか?

    • ベストアンサー
    • Perl
  • FFFTPでファイル削除できない

    http://www2.biglobe.ne.jp/~sota/ffftp-qa.html FFFTPが原因じゃないかも知れません。 ぷららのサーバーにアップロードしているフォルダが削除できません。 ログを掲載します。 ダウンロードのためにホスト 60.43.63.82 (35941) に接続しています. 接続しました. >NLST -alLR 150 Here comes the directory listing. 226 Directory send OK. ファイル一覧の取得は正常終了しました. (375 Bytes) >CWD / 250 Directory successfully changed. >RMD /login 550 Remove directory operation failed. >TYPE A 200 Switching to ASCII mode. >PASV 227 Entering Passive Mode (60,43,63,82,212,37) ダウンロードのためにホスト 60.43.63.82 (54309) に接続しています. 接続しました. >NLST -alL 150 Here comes the directory listing. 226 Directory send OK. ファイル一覧の取得は正常終了しました. (822 Bytes) サーバー管理者に削除してもらうしか方法はないでしょうか?

  • VB6.0でFTPサーバーの画像を直接表示したい

    VB6.0でFTPサーバーにある画像を取得し表示するプログラムがあるのですが、 ダウンロード件数が増えるとレスポンスが極端に悪くなります。 (例:4枚の場合6秒。24枚の場合30秒。) 処理手順は下記のようにしています。  1.FTPサーバーから画像をダウンロードし、PCのハードディスクに保存。  2.保存した画像を画面に表示。  3.DLした画像をPCのハードディスクから削除。 質問なのですが、パソコンに一時的に保存せずに、 FTPサーバーの画像を直接表示する方法はありませんでしょうか?

  • ftp_getできない?

    レンタルサーバの自前のファイルサーバからFTP接続にてファイルを取得しようとしているのですが、エラーとなってしまいます。 FTP接続はできているのですが、ファイルの取得に失敗(FALSE)してしまいます。 レンタルサーバの環境は OS:Linux PHP:4.4.1 試しにftp_nlist関数にてファイル一覧を取得しようとしましたが、やはり失敗(FALSE)してしまいます。 知り合いのレンタルサーバを借用して全く同じプログラムを実行すると正常に一覧の取得ができました。 FTP接続時・ログイン時にはエラーが発生していないのでFTPでの転送は可能だと思うのですが、全くわかりません。 どなたか分かる方ご教授お願いします。 以下、スクリプトです。 if($ftp=ftp_connect($ftp_host)){  if(ftp_login($ftp,$ftp_user,$ftp_pass)){   //ファイルリスト一覧取得    $file_list=ftp_nlist($ftp,".");   var_dump($file_list);   //ファイルダウンロード    if(!(ftp_get($ftp,$local_file,$remote_file,FTP_BINARY))){     エラー処理1;    }   }   else{     エラー処理2;   } } else{  エラー処理3; }

    • ベストアンサー
    • PHP
  • FTPでファイル一覧が見れない?

    今まで何の支障もなかったのですが Windows98と同時にFTPクライアントソフトを再インストールすると ファイル一覧が見れなくなりました。 DW4を使っていたのでFTPログを覗いたところ「LIST」で止まってました。 FFFTPを使ったところ、同じように「NLST -alL」で止まってしまいました。 telnetでログインしての「ls」は大丈夫なのですが ftpでログインしての「dir」と「ls」は同様に止まります。 他の無料サーバを試してみても、同様の結果でした。 これには、どういう原因が考えられるでしょうか?

  • FTPで一覧リストを作成し取得(Get)したい

    VBで、FTPサーバに接続し、指定のディレクトリーからいくつかのファイルをダウンロードしています。ダウンロードするファイル数が沢山あり、出来る事なら、そのディレクトリー内のファイル名の一覧リストがほしいのです。DOSコマンドから見るときは、'ls'や'dir'は使えるのですが、一覧の作成ができません。DOSプロンプトからFTPサーバをOPENし、dir > aaa.txt と入力すると自端末のC:\document and Settings\自分のフォルダー配下に、そのaaa.txt は作られるのですが、中身が入ってきません。ファイルの一覧がほしいとき、VBではどのようにコーディングすればいいのでしょうか。教えていただければ本当に助かります。よろしくお願いいたします。

  • FTPサーバーから受信したファイル一覧からファイル名だけを取得したいです

    こんばんは。いつもお世話になっております。 VB.NET+WinXPなのですが、 FTPサーバーにログインして、 LISTコマンドでファイル一覧を要求すると 「drwxrwxr-x 2 53 53 4096 Feb 28 2006 abc」 などというファイルやフォルダの一覧がかえって来ると思うのですが、 この中からファイル名やフォルダ名だけを取得するには どうしたらよいでしょうか。 TABやコンマが入っていないので、文字列関数で切り取るにも 区切りがわからないと思うのです。 ローカルドライブのDir関数なら、FileAttribute.Nomalや.Directoryの指定でファイル名だけや ディレクトリー名だけを指定して 取得することが出来るのですが、FTPサーバーの場合からの場合はどういった方法があるでしょうか。 参考程度でも構いませんので教えて頂けるとたすかります。m(__)m

  • vbでFTPサーバーに対して、サーバー上でのファイル複製(コピー&ペー

    vbでFTPサーバーに対して、サーバー上でのファイル複製(コピー&ペースト)させたいのですが、どうしたらいいのでしょうか? vbでFTPクライアント機能を作っていて、既に、FTPサーバーへのファイルアップロード、ローカルへのダウンロード、ファイルやディレクトリの削除といった処理は実現できました。 今度は、FTPサーバー上にある既存のファイルを複製したいのですが、そのような命令が無いため、どうしたらいいのか考えています。 例えば、ローカルにダウンロードし、それをリネームして再度アップロードすれば同じ結果にはなりますが、効率が悪すぎますしネットワークに対しても迷惑です・・・。 FTPサーバー上で既存のファイルを複製するにはどうしたらいいですか?? 分かる方お願いします。

  • Windows2000ProでFTPサーバー

    Windows2000ProでWARFTP1.65を使ってftpサーバーをたてていたのですが ルーター(コレガBAR SW-4P PRO)を設置してから接続できなくなりました。 クライアントはffftp1.82で「ファイル一覧の取得に失敗しました」とでてしまいます。 PASVモードでログオンまではできるのです。 サーバーをDMZモードにしても駄目でした。 また NLST -Rを使わないようにしたりLISTコマンドを使うように設定しても駄目でした。 何か良い解決方法は無いでしょうか?