- PR -

readがサーバ側のソケットが閉じられるまで制御を返してくれません。

投稿者投稿内容
はゆる
ぬし
会議室デビュー日: 2004/02/16
投稿数: 1008
お住まい・勤務地: 首都圏をウロウロと
投稿日時: 2004-09-25 17:28
こんにんちは。

ん? 「まずは http プロトコルをお勉強しましょう」 ということなのでは?

ソースを見るのなら、クライアント側のものの方がよいかと。
Lynx あたりはどうでしょう。
ナリエモン
会議室デビュー日: 2004/03/25
投稿数: 7
投稿日時: 2004-09-25 18:22
引用:

はゆるさんの書き込み (2004-09-25 17:28) より:
こんにんちは。

ん? 「まずは http プロトコルをお勉強しましょう」 ということなのでは?


回答するかたはそういったものの言い方でも問題ないのでしょうね
ちいにぃ
大ベテラン
会議室デビュー日: 2002/05/28
投稿数: 244
投稿日時: 2004-09-25 18:48
引用:
> 103: sprintf(send_buf, "GET %s HTTP/1.0rn", path);
で1.1を要求するとサーバー側がソケットを閉じずにread待ちなる
かな?と思いましたが結果は同じでした。


同じですか?
手元でApache1.3.19で telnet で試したときは、「HTTP/1.0」ならエンティティボディ
送信終了直後に、「HTTP/1.3.29」なら、15秒後(ApacheのKeepAliveTimeoutの
デフォルト設定)に切断されました。

KeepAliveTimeout ディレクティブ
http://httpd.apache.org/docs-2.0/mod/core.html#keepalivetimeout
ぽんす
ぬし
会議室デビュー日: 2003/05/21
投稿数: 1023
投稿日時: 2004-09-25 23:15
RFC に規定があったかどうかは確認していませんが、
Apache はそういう動作をするはずです。

念のため、手元にあった簡単なクライアントプログラムに手を入れて
テストしてみました。
サーバはちいにぃさんと同じく Apache 1.3.29 で、KeepAlive On の
設定にしてあります。

・「HTTP/1.0 の場合」および「HTTP/1.1 で Connection: Close を
付けた場合」
・・・送信完了後、直ちにサーバから切断される。

・「HTTP/1.1 で Connection: を指定しなかった場合」「HTTP/1.1 で
Connection: に、いいかげんな文字列を書いた場合」「HTTP/1.1 で
Connection: Keep-Alive とした場合」
・・・送信が終わった後も接続が維持されている。15秒後に切断される。
(ソケットから1バイトずつ読み出しながら画面に出力して受信状況を
確認してました)

という結果です。

引用:

ナリエモンさんの書き込み (2004-09-25 15:29) より:
なにかいいサーバのソースご存知ないですか?
apacheなど余りにもソースが巨大でどこから追えばいいか分からず
挫折しました(汗


よく使われているサーバプログラムはたいてい巨大ですから...
TCP echo サーバを書くところからはじめるのが基本でしょう。
TCP/IP プログラミングなら、
http://www.amazon.co.jp/exec/obidos/ASIN/0131411551/250-2462858-3021866
この本です。
和訳はこちら。
http://www.pearsoned.co.jp/washo/network/wa_net28-j.html

スキルアップ/キャリアアップ(JOB@IT)