¿Cómo puedo detectar que un socket esté medio abierto? El caso con el que estoy tratando es cuando el otro lado de un socket ha enviado un FIN y la aplicación Ruby ha ACKed ese FIN. ¿Hay alguna manera de decir que el socket está en esta condición?Ruby: cómo detectar cuándo se ha cerrado un lado de un socket
Tomemos, por ejemplo:
require 'socket'
s = TCPServer.new('0.0.0.0', 5010)
loop do
c = s.accept
until c.closed?
p c.recv(1024)
end
end
En este caso, cuando el telnet al puerto 5010, voy a ver todo mi entrada hasta que cierro la sesión de telnet. En ese punto, imprimirá cadenas vacías una y otra vez tan rápido como sea posible.
Esto parece ser un duplicado de http://stackoverflow.com/questions/61675/recovering-from-a-broken-tcp-socket-in-ruby-when-in-gets, no estoy seguro si sirve de algo aunque! – gaqzi
¿Has encontrado una solución? –
teniendo el mismo problema. tienes una solución? –