[Ruby] двунаправленный пайп
Ihar Viarheichyk
i.viarheichyk at sam-solutions.net
Tue Apr 22 14:06:07 MSD 2003
On Tue, Apr 22, 2003 at 02:56:31PM +0600, vic ismakaev wrote:
> Приветствую!
> Постараюсь объяснить свою задачу:
> Есть некий TCPserver с телнет-подобным пртоколом(вернее я его пытаюсь
> реализовать).
> Когда я к нему цепляюсь через сокет,он мне отдает поток данных(счетчик
> чего-нибудь) в цикле loop вида
> loop {
> sleep 10
> @sock.write("Bla-bla-bla" + "\n")
>
> }
> Эти данные я могу клиентом отловить и обрабботать.
> Но при таком подходе у меня полчаеться бесконечный цикл и прервать его можно
> только прибитием клиента или сервера или таймаутом.
> Мне же хочеться получить двунаправленный пайп,чтобы клиент мог послать
> какую-нибудь команду серверу для смены его поведения(прервать поток
> данных,обнулить его,разорвать соединение и т.д).
> Можно так сделать?
>
> Честно говоря,открывать второй сокет для команд очень не хочеться.
>
Ну тогда нужно смотреть Kernel#select
loop do
res = select([@sock], [], [], 10)
if res
cmd = @sock.read
.
.
.
else
@sock.write("Bla-bla-bla\n")
end
end
--
Igor Vergeichik
ICQ 47298730
More information about the Ruby
mailing list