我是ruby的新手,并按照“Ruby编程语言”这本书,我试图在ruby中学习一些Socket,以下是我的简单服务器/客户端:
## 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必须对客户端做一些响应才能继续?
答案 0 :(得分:2)
因为您在服务器端编写“recvfrom”,如果您对此进行注释,它将不会阻止,并且它将继续向客户端发送数据。但是,在实际情况中,通信的同行应该交换信息。