|
c言語でFTPクライアントのプログラムを組んでいます。 プロトコルやソースは大変参考にさせていただいています。 環境は、TurboLinux 8 serverです。 FTPクライアントのプログラムなのですが、ファイルの転送などは問題なく動作しているのですが、ディレクトリ単位の転送の記述部分がわかりません。何度かコマンドのデバッグモードで試して、RFCなどの記述も呼んでいるのですが。参考になるページがあるのでしたら、教えてください。 また、ファイルかディレクトリかを区別する方法もあればと思い、ご教授よろしくお願いいたします。 |
|
>>3231 じゅじゅ > ディレクトリ単位の転送 おそらく、ディレクトリを LIST or NLST して、一つ一つ RETR する しかないです。 > ファイルかディレクトリかを区別する方法 ブラウザで anonymous ftp サイトに接続した場合などは、LIST の結果が drwxr-xr-x ならディレクトリ、とするのが一般的だと思います。もっと きっちりやるなら、CWD で移動できたらディレクトリとみなす、とか。 基本的に、ftp は UNIX に依存したくなかったため、この辺はあえて 決めてないのではないかと思っています。 もしディレクトリを判別できるようにするなら、名前付きパイプは? ソケットは? デバイスファイルは? door は? ということになり、 結局 ls の結果をそのまま送る方がよい、と判断されたのではない でしょうか (そしてわたしは、この判断は誤りであると思っています)。 |
|
簡単なことかもしれませんが、LISTやNLSTをし、続けてファイルの総数やディレクトリの中にあるファイル名を取得することはできるのでしょうか?それらのデータを取得する記述と、また、 >drwxr-xr-x ならディレクトリを取得する 記述が分かりません。 ご教授よろしくお願いいたします。 |
|
>>3233 じゅじゅ LIST すれば drwxr-xr-x 9 user group 512 Apr 28 2001 dir1 drwxr-xr-x 10 user group 512 Jul 30 2000 dir2 -rw-r--r-- 1 user group 122 Mar 29 2000 file などという結果が返ってくるので、行頭が d である dir1 と dir2 がディレクトリであることがわかります。 さらに LIST dir1 とすれば dir1 の下のファイル・ ディレクトリ一覧が返ってきます。 |
|
>>3230 68user 前回はちんぷんかんぷんな質問失礼いたしました。 現状ちゃおのマシンにはapacheがインストールされています。 そしてrootにはhtdocsが指定されています。 さらにhtdocsの中にindex.htmlがあります。 まずはtelnetからやりなおしてみました。 コマンドプロンプトから以下のように入力しました。 telnet 127.0.0.1 80 接続成功 GET /index.html HTTP/1.1 HOST:127.0.0.1 Content-type:text/html ソース取得成功してます。 次にコマンドプロンプトからperlを実行します。 (もちろんperlのあるディレクトリには移動済みで、他のHTMLソースを吐き出させることにも成功しています) c:\>perl http_client.pl このときはなにも表示されません。 しかしコードは200を返します。 このときの結果は同じものではないのですか? >http-client.pl というのは、要はブラウザの代わりをする プログラムなのですが、その辺は理解されていますか? つまり$iaddrで指定したアドレスにあるソースを受け取って表示する、 dos上で実行したらbody部分がそのままdosプロンプトに表示されるということでいいんですよね??? それともこのプログラムにさらに引数を与えなければいけないのでしょうか? 長文になってしまい失礼いたしました。 またお時間のあるときにお返事いただければ幸いです。 |
|
Makefileでのライブラリの定義について はじめまして。solaris初心者のかんすけです。 環境はsparc-solaris8です。 Makefileを作成してみたのですが、自分で作成したライブラリファイルをCCのところでうまく定義できません。実行すると「ファイルが見つかりません」とエラーが表示されます。 この場合、まず何を疑えば良いのでしょうか? 正しいMakefileでのライブラリの定義の仕方を教えてください。 また良いサンプルファイルのURL等ありましたら、紹介してください。 よろしくお願いします。 |