如何通过scgi界面直接与rtorrent对话?来自stdlib的Ruby的XMLRPC客户端只能通过HTTP协议进行通信,而rtorrent只能通过SCGI进行通信。
答案 0 :(得分:2)
作为首发:
#!ruby
require "xmlrpc/client"
class XMLRPC::RTorrent < XMLRPC::Client
def do_rpc(xml, async=false)
headers = {
'CONTENT_LENGTH' => xml.size,
'SCGI' => 1
}
header = "#{headers.to_a.flatten.join("\x00")}"
request = "#{header.size}:#{header},#{xml}"
TCPSocket.open(@host, @port) do |s|
s.write(request)
s.read.split(/\n\s*?\n/, 2)[1]
end
end
end
server = XMLRPC::RTorrent.new("127.0.0.1", '', 5000)
p server.call("system.listMethods")
它忽略异步,rtorrent rpc在端口5000上。
更多详情:Place