|
はじめまして。 最近UNIX-CでNetwork Programmingを始めた者です。よろしくお願いします。 こちらに掲載されているC言語のechoプログラム(echo-server-1.c)を そのまま書き写して実行したのですが、先頭の1文字しか返ってきません。 read_line()の戻り値が [0 or 1] なので、 94行目で、文字列が1文字だけになってしまいます。 read_line()の戻り値を [0 or 文字数] に修正すればよいと思います。 私の勘違いでしたらすみません(^^; |
|
>>2079 るは ありがとうございます。テスト不足で失礼しました。修正しておきます。 最初はちゃんと動いていた気がするんだけど、いつエンバグしたのかなぁ? |
|
いつもお世話になってるskel.103Mです。 >>1978 skel.103M >>1980 68user >>1981 skel.103M このことについて、news:fj.mailに記事が投稿されているのを(今さらなが ら)発見!: Message-ID: <tzzlmmezl9x.fsf@nightmare.hm.taito.co.jp> …投稿日は2001/06/27(水)となってますね。 |
|
はじめまして。 perlを勉強中の者です。 いきなりで恐縮ですが、質問です。 perlのIO::SOCKETモジュールを使ったhttpクライアントを作っているのですが 画像を読み込めないんです。ちなみに、htmlはうまくいっています。 今作っている物では、他サーバーからファイルを読みとり 自分のサーバーに保存という作業をやらせたいんです。 しかし、画像ファイルを読み込むと改行が不要な位置に 改行入ってしまいます。 画像も読み込めるようにするにはどう作りかえたら良いのでしょうか? ソース http://uchu.hypermart.net/image.txt |
|
>>2082 猫じゃらし ちゃんと環境を書きましょう。Windows ですか? 1. ヘッダもそのまま 2.gif に出力してしまう。 2. 改行が入ってしまうなら、Windows でテキストモードになっているのかも。 ということで、 # ヘッダまでを読み飛ばす while (<$remote>){ last if ( $_ eq "\n" || $_ eq "\r\n" ); } # ここからが画像データ while (<$remote>){ $outdata .= $_; } open(OUT, "> 2.gif"); binmode(OUT); print OUT "$outdata"; close(OUT); でどうでしょう。 foreach を使わず while を使うのは、foreach の () 内はリストを要求する ので、<$remote> はリストコンテキストで評価され、 foreach ("1行目のデータ", "2行目のデータ", ..., "最終行のデータ"){ と展開されてしまうからです。よって、 foreach (<$remote>){ last if ( $_ eq "\n" || $_ eq "\r\n" ); } の時点でファイルハンドル <$remote> から全てのデータを読み 切ってしまうので、last で抜けた後には <$remote> という ファイルハンドルにはデータが残っていません。 foreach (scalar(<$remote>)){ で強制的にスカラーコンテキストにするならいいんですが、 この場合は素直に while を使った方がよいでしょう。 |
|
>>68user 環境を書き忘れてすいません、マナー違反でしたね、、、 ちなみに、環境はWinMEでActivePerlを動かしている状態です。 さて、68userさんのレスにあったものをペーストして ソースは下のようになりました。 http://uchu.hypermart.net/image2.txt これで無事動かすことができました。ありがとうございます。 このHPは、これからも勉強参考にさせてもらいますね。 ではでは、、 |