Как я могу определить, что сокет полуоткрыт? Я имею в виду случай, когда другая сторона сокета отправила FIN, а приложение Ruby получило этот 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. В этот момент он будет печатать пустые строки снова и снова так быстро, как может.