2010-07-21 136 views
3

我想创建一个仅在特定接口(例如eth0)上侦听的TCP套接字。我怎样才能做到这一点?我试过浏览Socket API,但是我可能没有正确理解事情。Ruby:将监听套接字绑定到特定接口

这是我听的方法至今:

def listen 
    socket = TCPServer.open($port) 
    while $looping do 
    Thread.start(socket.accept) do |server| 
     response = server.read 
     puts "Command received: #{response}" 
     if sanitize(response) 
     execute(response) 
     end 
    end 
    end 
end 

感谢您的帮助。

回答

3

您将需要获取要侦听的网络接口的IP,并将其作为第一个参数传递给TCPServer.new。除了解析%x(ifconfig <interface> | grep inet)的输出之外,我不知道通过名称指定接口。

+0

谢谢,这工作。我做了以下操作: socket = TCPServer.new(“127.0.0.1”,$ port) 对于记录,TCPServer.open似乎以完全相同的方式工作。 – Magicked 2010-07-21 19:44:35