Come posso rilevare che un socket è semiaperto? Il caso che ho a che fare è quando l'altro lato di un socket ha inviato una FIN e l'app Ruby ha ACKed quella FIN. C'è un modo per me di dire che la presa è in questa condizione?Ruby: Come rilevare quando un lato di una presa è stato chiuso
Prendiamo, per esempio:
require 'socket'
s = TCPServer.new('0.0.0.0', 5010)
loop do
c = s.accept
until c.closed?
p c.recv(1024)
end
end
In questo caso, quando telnet alla porta 5010, ci vediamo tutti il mio ingresso fino a quando chiudo la sessione telnet. A quel punto, stamperà le stringhe vuote più e più velocemente possibile.
Questo sembra essere un duplicato di http://stackoverflow.com/questions/61675/recovering-from-a-broken-tcp-socket-in-ruby-when-in-gets, non è sicuro se aiuta qualsiasi tho! – gaqzi
Hai trovato una soluzione? –
Haivng lo stesso problema. hai una soluzione? –