Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby中的简单TCPSocket服务器存在HTTP头问题_Ruby_Http_Sockets_Tcp_Tcpsocket - Fatal编程技术网

Ruby中的简单TCPSocket服务器存在HTTP头问题

Ruby中的简单TCPSocket服务器存在HTTP头问题,ruby,http,sockets,tcp,tcpsocket,Ruby,Http,Sockets,Tcp,Tcpsocket,我正在Ruby中测试一些简单的HTTP服务器实现(无线程、线程、光纤和eventmachine),但这段简单的代码在使用线程时失败: #!/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

我正在Ruby中测试一些简单的HTTP服务器实现(无线程、线程、光纤和eventmachine),但这段简单的代码在使用线程时失败:

#!/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可以正常工作。这是为什么?

我觉得您需要在开始发送响应之前发送一个换行符。