68user's page 掲示板

Prev< No. 568〜576> Next  [最新発言に戻る] [過去ログ一覧]
No. 568 # 68user 1999/11/30 (火) 14:25
    while (1){
        char buf[BUF_LEN];
        int read_size;
        static int body_flg = 0;
        char *p;

        read_size = read(s,buf,BUF_LEN);
        if ( read_size > 0 ){
            if ( body_flg ){
                p = buf;
            } else if ( p = strstr(buf,"\r\n\r\n") ){ /* 空行はあるか? */
                p+=4; /* \r\n\r\n の分先に進める */
                read_size -= p-buf; /* サイズ調整 */
                body_flg = 1;
            }
            if ( body_flg ){
                write(1,p,read_size);
            }
        } else {
            break;
        }
    }
こんな感じでどうでしょうか?

No. 569 # 68user 1999/11/30 (火) 15:29
あ、全然ダメじゃん。
> } else if ( p = strstr(buf,"\r\n\r\n") ){
buf は \0 で terminate されてないし、そもそも
\r\n\r\n が1回で読める保証はなくて、ちょうど
境界にまたがってるかもしれない。

ま、そこらへんはよしなに。

No. 570 # k 1999/11/30 (火) 17:35
pingコマンドでは、ホスト名を指定することによって、
そのホスト名(またはIPアドレス)との接続確認が
できます。
これと同様に、そのホスト名(またはIPアドレス)の
特定のポート番号に対して、接続確認を行いたいの
ですが、なにか良い方法ないでしょうか?

No. 571 # 68user 1999/12/01 (水) 00:33
実際に connect するのはダメなんですか?
それ以外の方法はないと思います。多分。

No. 572 # ミレニアム [E-mail] 1999/12/01 (水) 02:33
本サイトはたまにではありますが参考にさせていただいております。
私も何か投稿させていただきたいと考えておりましたが、プログラミングサークル“ミレニアム”を立ち上げましたのでご紹介をさせていただきたいと思います。掲示板の案件と直接関係ないと思われますが容赦願います。
ミレニアムはサークルという体質を生かして医療・福祉・教育の分野で高機能・低価格ビジネスアプリケーション構築を目的としたプログラミングサークルであります。
現在、メンバーは15名程度でホームページを建設中であり、現在CGI等の組める方、VB、VC++、Delphi、Java、HTML、DTP(デザイン)の得意な方を募集致しております。メンバーは現職のプログラマー、DTP構築者、家庭の主婦などいろいろな方で構成されております。
ミレニアムに参加する条件としては本人に常識と責任感と好奇心が必要でありその他は問われません。
興味がございましたらメールにてお返事お願いいたします。

失礼いたしました。解からないことがありましたら私も投稿させていただくかもしれませんのでよろしくお願いいたします

No. 573 # らんらん [E-mail] 1999/12/01 (水) 10:15
はじめまして、いつもHP見さしていただいてます 感謝
winsockを(c言語で)使ってチャットのプログラムを書いてみようと思ったんですけれど、マルチスレッドタイプのサーバーでクライアントにsend()する時(多分IPマルチキャストっ奴を使うと思うんですけど)のやり方について何か情報お持ちでないでしょうか?
接続されたクライアント全てに同報送信できるようにしたいんですけれど、よろしくお願いします。
後、勝手にHPにリンク張ってしまったんですけどよろしかったでしょうか?
まずいようだったら連絡下さい

No. 574 # 68user 1999/12/01 (水) 13:41
マルチキャストするなら、TCP じゃなくて UDP になると思いますが、
そこらへんの基礎知識はありますか? あと、IPv4 ではマルチキャストは
optional なんですが、大抵の OS には実装されてるのかしら?

で、僕も興味はありますが、そこらへんはまだ自分のものにしていないので、
説明できないです。

http://X68000.startshop.co.jp/~68user/net/link-book.html
    「UNIX ネットワークプログラミング第2版 Vol.1」
にとっても詳しく書いてありますので、よかったら買ってみて下さい。
# 今説明しようとすると、この本の丸写しになってしまいますので。

> \r\n\r\n が1回で読める保証はなくて、
ここらへんのことについても、この本に詳しく書かれています。
要は1バイトずつ読めばいいんですが、毎回 read しては遅くなるので
先にバッファに読み込んだり、read しているときにシグナルが飛んできた
場合の EINTR などなど。

8000円出すだけで、5万円分くらいの知識が得られます。おすすめ。

> 勝手にHPにリンク張ってしまったんですけどよろしかったでしょうか?
どうぞ〜。

No. 575 # 日向 1999/12/01 (水) 16:10
>> $sendとか、適当な変数に全部繋げて代入し、
>> print SOCKET $send; としなければならない
>ということはあり得ない

確かにそうでした…$sendに全部代入するのと
HTTPバージョンを色々変えるのを同時に試してて混乱してたみたいです(汗)
というわけで、やっぱり繋げる必要はありませんでした。ハイ。
また、HTTPバージョン省略も0.9扱いになっているようでした。

でも省略すると0.9にされるというのはちょっと驚き。
これはサーバ側でそう設定している為ですよね…?という事は…
今時0.9なんて使わないし…1.0や1.1をデフォルト設定にしているサーバもあるんでしょうか?

No. 576 # 68user 1999/12/01 (水) 17:11
HTTP のバージョン省略時は 0.9 であると RFC で決まっています。
    http://X68000.startshop.co.jp/~68user/net/rfc.html
というより、「省略したもののみを 0.9 とみなす」と言った方が正しいかな。
GET /index.html HTTP/0.9 というリクエストはできないようなので。

Prev< No. 568〜576> Next  [最新発言に戻る] [過去ログ一覧]