我正在 Redmine 中开发一个插件,当我点击一个按钮时它会连接到远程服务器。但是我无法连接到服务器。我收到以下错误:
Errno::ECONNREFUSED 由于目标机器主动拒绝,无法建立连接。- 连接(2):
下面是我写的代码。
_navigation.html.erb
<% if User.current.allowed_to?(:view_repository, @project) -%>
<div style="float: left; width: auto; padding-right: 1%">
<%= button_to_function l(:gerar_build_project), remote_function(:action => 'exec_client', :controller => 'GerarVersao')%>
</div>
|
<% end -%>
gerar_versao_controller.rb
#encoding: utf-8
require 'socket' # Sockets are in standard library
class GerarVersaoController < ApplicationController
unloadable
def exec_client
hostname = 'I put the ip here' #168.192.0.1
port = 8522
s = TCPSocket.open(hostname, port)
s.close # Close the socket when done
end
end
在服务器端(server.rb):
#encoding: utf-8
require 'socket' # Get sockets from stdlib
server = TCPServer.open(8522) # Socket to listen on port 8522
loop { # Servers run forever
puts "Aguardando conexao"
client = server.accept
client.close
}
附加信息:
服务器在 Windows 上,我有 2 个客户端(第一个在 windows 上,第二个在 linux 上)都使用上面列出的相同脚本。
防火墙被禁用。
服务器正在监听 8522 端口。我通过命令“netstat /tvan | more”进行了检查
服务器IP是正确的。我通过服务器机器中的命令 ipconfig 检查了它。此外,我尝试使用服务器的名称而不是其 IP,但我遇到了同样的问题。
重要提示:我尝试通过另一个服务器建立的另一个端口(SVN 服务器使用的端口 8443)建立一个简单的连接。连接已成功完成,但是当我尝试使用另一个未使用的端口时,问题又回来了,这进一步改善了我对此的疑问。