2012-04-20 9 views
3

私はルビーに新しいです、と書籍「Rubyプログラミング言語」に従うで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"と記述するので、これをコメントするとブロックされず、クライアント側にデータを送信し続けます。しかし、現実の状況では、コミュニケーションの相手は情報を交換すべきである。