创建并连接到套接字返回连接被拒绝 - 连接(2)

时间:2013-04-04 19:08:57

标签: ruby sockets

我有一个用C编写的正在运行的服务器,我需要为这个服务器创建一个ruby客户端。服务器通过虚拟机在ubuntu上运行,我正在使用Mac OS(如果真的很重要,我就不知道了。)

到目前为止,我在客户中所拥有的是

myStreamSock = Socket::new( Socket::AF_INET, Socket::SOCK_STREAM, 0 )
myaddr = [Socket::AF_INET, 3333, 127, 0, 0, 1, 0, 0].pack("snCCCCNN")

myStreamSock.connect( myaddr ) 

返回

`connect': Connection refused - connect(2) (Errno::ECONNREFUSED)

这是因为服务器是在vm上运行的,还是我错过了什么?

任何帮助都是真正的帮助!

1 个答案:

答案 0 :(得分:1)

我一直使用Ruby进行端口扫描,我使用一个非常简单的套接字连接:

begin
  a_sock = Socket.new(:INET,:STREAM)
  raw = Socket.sockaddr_in(port,@ip)
  port_status(port,"Open") if a_sock.connect(raw)
rescue (Errno::ECONNREFUSED) #check if the port is closed
  port_status(port,"Closed")
rescue (Errno::ETIMEDOUT)
  port_status(port,"Timed Out")
ensure
  a_sock.close if a_sock
end

def port_status(port,status)
  @ports.merge!("port_#{port}".to_sym => {status: status})
end

显然这与你想要做的不一样,但它应该给你一些想法。还有一些变量没有明显声明,因为这是从块中取出的。

这也可能会让您查看https://thebc.ch/blog/217/ruby-of-wisdom/