我在Ruby
编写了一个充当HTTP客户端的类。代码很小,但我没有使用'net/http'
的原因是因为这种方法允许我对正在进行的请求有更多的控制,而HTTP的文档根本没有帮助。
无论如何,问题是套接字只适用于一个请求和响应。发送第二个或后续请求会给我一个空的回复。
例如:
我尝试关闭并打开请求之间的连接,但这只会减慢速度并且无法解决问题。我仍然得到空洞的回应。
那么这里有什么问题?
是否有方法可以让我查看TCPSocket
对象是否有开放连接,这样我就不会意外地打开一个新对象?
答案 0 :(得分:4)
尝试:
require "socket"
host = "google.com"
port = 80
socket = TCPSocket.new host,port
request = "GET / HTTP/1.0\r\nHost:#{host}\r\n\r\n"
socket.print request
response = socket.read
这将返回Google的主页。如果要在请求后发送请求,则将其更改为“HTTP / 1.1”并读取响应,然后发送下一个请求。