Ruby TCPSocket read_all - PullRequest
       26

Ruby TCPSocket read_all

0 голосов
/ 10 мая 2010

Есть ли метод, который может действовать как read_all, так как вместо использования TCPSocket.read (no_of_bytes) можно просто TCPSocket.read_all. Сначала я отправляю объекты с помощью YAML :: dump, затем отправляю их, но я не знаю, как получить их размер в байтах. Заранее спасибо, эл. О, и я очень, очень новичок в любой форме сетевого программирования, так что будьте спокойны!

Ответы [ 2 ]

2 голосов
/ 10 мая 2010

Не могу помочь вам с Ruby, но обычная практика с сериализацией объектов и сетевым взаимодействием - либо сначала отправить длину, чтобы вы знали, сколько нужно прочитать, либо использовать предварительно определенный разделитель для разделения сообщений.

1 голос
/ 10 мая 2010

Я сомневаюсь, что есть такая функция. ТЕМ НЕ МЕНИЕ! Написание этого действительно самая легкая часть. Я собираюсь сделать этот язык независимым, потому что я давно писал любой код ruby, но в псевдокоде это в основном так

def read_all(s)
   buffer = ""

   while (tmp = s.recv(128))
      if tmp == end_of_file
         break
      end

      buffer = buffer + tmp
   end

   return buffer
 end

Готово. Цикл и получение, пока больше нет доступных данных. Это одна из самых простых задач:)

...