2010-07-21 135 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