[Ruby] чтение из сокета неопределенного количества строк

vic ismakaev viclists at mail.esoo.ru
Wed May 7 15:39:24 MSD 2003


Приветсвую всех!
Я опять с тупым вопросом:
как в цикле прочитать из сокета неопределенного количество строк?
Например есть код вида 
@s=TCPSocket.open('mail','110')
p @s.readline("\n")
@s.puts("user test")
p @s.readline("\n")
@s.puts("pass 123")
p @s.readline("\n")
@s.puts("stat")
p @s.readline("\n")
@s.puts("list")
while @s.readline.length > 0
     line=@s.readline
    p line
end
Так вот - в последнем цикле: останавливается на последней строке,прочитанной 
из сокета и остается в таком состоянии,пока я его не прерву по CTRL+C.После 
чего появляется ошибка типа
./pop.rb:11:in `readline': Interrupt
        from ./pop.rb:11
И я никак не пойму,как отловить момент,что строк из сокета больше не получишь 
и выйти из цикла.
По идее,в такой конструкции цикла while он должен прерываться после последней 
строки и вываливаться из цикла,но почему-то этого не происходит.

Потому и вопрос - какого вида цикл мне нужно использовать?


-- 
С уважением
Виктор В Исмакаев



More information about the Ruby mailing list