1

我正在 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)建立一个简单的连接。连接已成功完成,但是当我尝试使用另一个未使用的端口时,问题又回来了,这进一步改善了我对此的疑问。

4

0 回答 0