【发布时间】:2017-04-08 21:21:42
【问题描述】:
在 Ruby http-2 gem 的 example 客户端实现中,底部有一段代码用于从套接字读取数据:
while !sock.closed? && !sock.eof?
data = sock.read_nonblock(1024)
# puts "Received bytes: #{data.unpack("H*").first}"
begin
conn << data
rescue => e
puts "#{e.class} exception: #{e.message} - closing socket."
e.backtrace.each { |l| puts "\t" + l }
sock.close
end
end
我不明白这个循环是如何终止的。大概是从套接字中提取了一个 eof,但我不明白如何。服务器不会知道哪个流是最后一个。
假设没有错误,这个循环如何结束?
【问题讨论】: