Вопрос потока на сервере сокетов Ruby: как отправить всем клиентам? - PullRequest
0 голосов
/ 26 апреля 2010

Я делаю сервер сокетов TCP (ruby).Поток создается для каждого подключенного клиента.В какой-то момент я пытаюсь отправить данные всем подключенным клиентам.Поток прерывается при попытке исключения (ruby 1.8.7)

require 'socket'
# I test it home right now
server = TCPServer.new('localhost', 12345);
while(session = server.accept)
 #Here is the thread being created
 Thread.new(session) do |s|
  while(msg = s.gets)
   #Here is the part that causes the error
   Thread.list.each { |aThread|
    if aThread != Thread.current
     #So what I want it to do is to echo the message from one client to all others
     #But for some reason it doesn't, and aborts on the following string
     aThread.print "#{msg}\0"
    end
   }
  end
 end
Thread.abort_on_exception = true
end

Что я делаю неправильно?

1 Ответ

0 голосов
/ 26 апреля 2010

В следующем PDF-файле подробно рассматривается программирование сокетов в ruby. Он включает в себя асинхронную обработку и демонстрирует работающую демонстрацию небольшой программы чата.

Руководство IBM по программированию сокетов ruby ​​

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...