From: Wei Yuan Date: 2011-01-07T22:16:53+09:00 Subject: [ruby-list:47739] TCPServerクラスではacceptしたオブジェクトに対してgetsする必要はあるか? はじめまして、魏と申します。 現在TCPServerを使った簡単なWEBServerを作っています。 うまくいかなかった箇所は、 サーバーからresponseを返す時に、HTTPのヘッダーとボディーを分けて出力しても、ヘッダーしかブラウザで認識できない問題です。 cl.print "HTTP/1.1 200/OK\r\nContent-type:text/html\r\n\r\n" cl.write("

vvvvvvvvvvvvvvvv

") 一方 ヘッダーとボディーの間にgetsメソッドを呼ぶと、ブラウザでは正確に表示されます。 cl.print "HTTP/1.1 200/OK\r\nContent-type:text/html\r\n\r\n" cl.gets cl.write("

vvvvvvvvvvvvvvvv

") getsを使わなくても、responseできると思ったのですが原因がわかりません。 よろしくお願いします。 (getsを使わない場合でもtelnetで見ると、ちゃんとボディーはクライアントに届いています。) ■ソースコード ---------------------------------------------------------------------- #!/usr/bin/env ruby require 'socket' s = TCPServer.new(8000) loop { cl = s.accept Thread.start { cl.print "HTTP/1.1 200/OK\r\nContent-type:text/html\r\n\r\n" cl.gets cl.write("

vvvvvvvvvvvvvvvv

") cl.close } }