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

관련 문제