我需要製作一個緩存服務器,其實就像memcached,所以我試圖啓動一個Telnet服務器,以便我可以發送命令,然後告訴我是否需要存儲數據或從鍵。我想這樣做,因爲我需要實現一個TCP服務器,我需要使用命令,所以一個普通的HTTP服務器是不夠的(雖然我可以發佈的數據和地址可以是命令,我仍然搞清楚)。Ruby Telnet拒絕連接
現在的背景後,真正的問題是,我甚至不能啓動我的Telnet服務器,這是我在網上找到的代碼:
localhost = Net::Telnet::new("Host" => "localhost",
"Timeout" => 10,
"Prompt" => /[$%#>] \z/n)
localhost.login("username", "password") { |c| print c }
localhost.cmd("command") { |c| print c }
localhost.close
我真的不明白這在很大程度上,也許我試圖用該代碼連接到現有的Telnet服務器,這就是爲什麼它不起作用。無論如何,我得到它的錯誤就是:
C:/Ruby22-x64/lib/ruby/2.2.0/net/telnet.rb:350:in `initialize': No connection could be made because the target machine actively refused it. - connect(2) for "localhost" port 23 (Errno::ECONNREFUSED)
from C:/Ruby22-x64/lib/ruby/2.2.0/net/telnet.rb:350:in `open'
from C:/Ruby22-x64/lib/ruby/2.2.0/net/telnet.rb:350:in `block in initialize'
from C:/Ruby22-x64/lib/ruby/2.2.0/timeout.rb:88:in `block in timeout'
from C:/Ruby22-x64/lib/ruby/2.2.0/timeout.rb:98:in `call'
from C:/Ruby22-x64/lib/ruby/2.2.0/timeout.rb:98:in `timeout'
from C:/Ruby22-x64/lib/ruby/2.2.0/net/telnet.rb:349:in `initialize'
from C:/Users/Bruno/RubymineProjects/Ruby Server/Server.rb:37:in `new'
from C:/Users/Bruno/RubymineProjects/Ruby Server/Server.rb:37:in `<top (required)>'
from -e:1:in `load'
from -e:1:in `<main>'
Process finished with exit code 1
預先感謝您的任何幫助或提示,正如我所說,我仍然試圖找出如何做到這一點。
這是一個客戶端。你的服務器在哪裏?你很難看到其中一種在野外運作。 – tadman
我以爲我正在啓動一臺服務器。我在做這個之前試過:'@server = TCPServer.new(host,port)'帶有「127.0.0.1」8899,而通常的循環是socket = @ server.accept ...等等。但是,當我嘗試通過執行telnet主機端口的cmd連接到它時,但它失敗並出現相同的錯誤。我想我從來沒有真正開始一個Telnet服務器,我該如何使用紅寶石啓動一個? –
你可能沒有在你的客戶端指定端口,它的默認值爲23.值得注意的是,telnet是一件博物館作品,你可能想用常規的TCPSocket代替。 – tadman