代码之家  ›  专栏  ›  技术社区  ›  Ell

ruby tcpsocket全部读取

  •  0
  • Ell  · 技术社区  · 16 年前

    是否有一个方法可以像read_all一样,而不是使用tcpsocket.read(没有_字节),可以简单地tcpsocket.read_all。我先通过yaml::dump'ing发送对象,然后再发送它们,但我不知道如何获得它们的字节大小。提前谢谢,嗯。哦,我对任何形式的网络编程都非常非常陌生,所以对我来说要轻松点!

    2 回复  |  直到 16 年前
        1
  •  1
  •   LukeN    16 年前

    我怀疑有这样的功能。然而!写真的是最简单的部分。我将不得不使这种语言不可知,因为我已经很久没有写过任何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
    

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

        2
  •  2
  •   Nikolai Fetissov    16 年前

    Ruby帮不了你,但是对象序列化和联网的通常做法是先发送长度,这样你就知道要读多少,或者使用预先定义的分隔符来分隔消息。

    推荐文章