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

问题描述:

我有一个用C编写的正在运行的服务器,我需要为此服务器创建一个ruby客户端。服务器通过虚拟机在Ubuntu上运行,我在Mac OS上工作(我不知道这是否真的很重要)。创建并连接到套接字返回连接拒绝 - 连接(2)

我在客户端什么到现在是

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) 

这是因为服务器上的虚拟机上运行,​​还是我失去了一些东西?

任何帮助真是令人厌恶!

+0

为什么你使用'Socket',而不是'TCPSocket'看也可能是有用的?该端口是否打开并接受连接?你有没有尝试过像'telnet localhost 3333'? – tadman 2013-04-04 20:26:23

我一直在使用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/