2012-01-18 2 views
4

원격 IP에 5 초마다 바이트를 보내는 TCP/IP 스택이있는 사용자 지정 장치가 있습니다.레일 응용 프로그램에서 TCP/IP 데이터 수신

원격 IP에서 사용자 정의 장치가 보낸 데이터를 수신, 저장 및 표시해야하는 레일 3.1.3이있는 사이트를 구축하고 있습니다.

나는 this과 같은 백그라운드에서 TCP 소켓을 실행하려고 생각하고 있었지만 레일 사이트와 통합하는 방법에 대한 단서가 없습니다. 배치 위치, 시작 방법 및 데이터를 뷰에 전파하는 방법.

아무도 내가 어떻게 진행해야하나요?

+0

당신은 어떤 방법을 찾았나요? 나는 또한 동일한 시나리오에 직면하고있다. –

+0

@soundar, 나는이 문제에 대한 해결책을 제시했다. – dcarneiro

답변

1

이 문제를 해결하기 위해 메시지를 처리 ​​할 TCP 서버를 시작하는 raketask를 만들었습니다.

참고 :이 코드는 나는 그것이 작동하는 방식을 100 % 확실하지 않다, 그래서 년 이상을 가지고,하지만 난 핵심 부분이 생각 :

@server = TCPServer.new(@host, port) 

loop do 
    Thread.start(@server.accept) do |tcpSocket| 
    port, ip = Socket.unpack_sockaddr_in(tcpSocket.getpeername) 
    begin 
     loop do 
     line = tcpSocket.recv(100).strip # Read lines from the socket 
     handle_message line # method to handle messages from the socket 
     end 
    rescue SystemCallError 
     #close the sockets logic 
    end 
    end 
end 
관련 문제