루비

2012-04-20 3 views
3

내가 루비에 새로운 오전, 그리고 책 "루비 프로그래밍 언어"를 따릅니다의 UDPSocket, 나는 루비의 일부 소켓을 배우려고 노력하고, 다음과 같은 내 간단한 서버/클라이언트입니다 :루비

## server 

require 'socket' 

server= UDPSocket.new 
server.bind('localhost', 3000) 
loop do 
    data,address=server.recvfrom(1024) 
    server.send(data.reverse,0,address[3],address[1]) ############ My problem ######### 
    puts "get #{data} from #{address[3]}" 
end 
나는이 라인을 주석 경우
##client 
require 'socket' 

ds = UDPSocket.new 
#ds.connect('localhost', 3000) 
while line=gets 
    ds.send(line.chomp, 0,'localhost', 3000) 
    response,address = ds.recvfrom(1024) 
    puts response 
end 

주 라인

server.send(data.reverse,0,address[3],address[1]) 

는, 서버가 보유, 더 이상 클라이언트에 응답을하지 않는 것으로 보인다.

이유가 궁금합니다.

계속하려면 UDPSocket이 클라이언트에 응답해야한다는 의미입니까?

답변

2

"recvfrom"을 서버 측에 작성하므로 주석 처리하면 차단되지 않으며 클라이언트 측에 계속 데이터를 보냅니다. 그러나 실제 상황에서 의사 소통은 정보를 교환해야합니다.