Ruby中的简单TCPSocket服务器出现HTTP头问题

时间:2011-09-30 10:00:05

标签: ruby http sockets tcp tcpsocket

我在Ruby中对一些简单的HTTP服务器实现进行基准测试(没有线程,线程,光纤和事件处理器),但这段简单的代码无法使用线程:

#!/usr/bin/env ruby

require 'socket'

server = TCPServer.new("127.0.0.1", 8080)
puts "Listening on 127.0.0.1:8080"
while true
  Thread.new(server.accept) do |client|
    msg = client.readline
    headers = [
      "",
      "HTTP/1.1 200 OK",
      "Date: Fri, 30 Sep 2011 08:11:27 GMT",
      "Server: TCP socket test",
      "Content-Type: text/html; charset=iso-8859-1",
      "Content-Length: #{msg.length}\r\n\r\n"].join("\r\n")

    client.write headers
    client.write ">>> Data sent:\n #{msg}"
    client.close
  end
end

当数组中的第一个元素是“”或其他字符串,而不是直接“HTTP / 1.1 200 OK”响应时,一个简单的curl http://localhost:8080/可以正常工作。这是为什么?

0 个答案:

没有答案