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

Grigory Milev week at altlinux.ru
Wed May 7 16:32:19 MSD 2003


>>>>> "vic" == vic ismakaev <viclists at mail.esoo.ru> writes:

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

    vic> Потому и вопрос - какого вида цикл мне нужно использовать?
Проверяй на ! @s.eof

+--------------------------------------------------------+
Grigory Milev	mailto:week at altlinux.ru
ALT Linux Team	http://www.altlinux.ru
+--------------------------------------------------------+
Life too beautiful and interesting. Don't worry, be happy.



More information about the Ruby mailing list