Как я могу обнаружить, что сокет является полуоткрытым? Случай, с которым я имею дело, - когда другая сторона сокета отправила FIN, и приложение Ruby имеет ACKed тот FIN. Существует ли способ для меня сказать, что сокет находится в этом условии?
Возьмите, например:
require 'socket'
s = TCPServer.new('0.0.0.0', 5010)
loop do
c = s.accept
until c.closed?
p c.recv(1024)
end
end
В этом случае, когда я telnet в порт 5010, я буду видеть весь свой вход, пока я не закрою сеанс telnet. В той точке это распечатает пустые строки много раз с такой скоростью, как это может.