Ruby TCPSocket read_all

时间:2010-05-10 18:57:34

标签: ruby networking tcp send

是否有一个方法可以像read_all一样,而不是使用TCPSocket.read(no_of_bytes),可以简单地使用TCPSocket.read_all。我首先通过YAML发送对象:: dump'ing然后发送它们但我不知道如何以字节为单位获取它们的大小。在此先感谢,ell。哦,我对任何形式的网络编程都非常非常新,所以对我来说很容易!

2 个答案:

答案 0 :(得分:2)

无法帮助您使用Ruby,但通常使用对象序列化和网络的做法是首先发送长度,以便知道读取多少,或者使用预定义的分隔符来分隔消息。

答案 1 :(得分:1)

我怀疑是否有这样的功能。然而!写它真的是最容易的部分。我将不得不使这种语言不可知,因为我写了任何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

完成。循环和接收,直到没有更多数据可用。这是最简单的任务之一:)