- - PR -
readがサーバ側のソケットが閉じられるまで制御を返してくれません。
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2004-09-25 17:28
こんにんちは。
ん? 「まずは http プロトコルをお勉強しましょう」 ということなのでは? ソースを見るのなら、クライアント側のものの方がよいかと。 Lynx あたりはどうでしょう。 | ||||
|
投稿日時: 2004-09-25 18:22
回答するかたはそういったものの言い方でも問題ないのでしょうね | ||||
|
投稿日時: 2004-09-25 18:48
同じですか? 手元で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 | ||||
|
投稿日時: 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バイトずつ読み出しながら画面に出力して受信状況を 確認してました) という結果です。
よく使われているサーバプログラムはたいてい巨大ですから... 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 | ||||
