【问题标题】:Ruby TCPSocket read_allRuby TCPSocket read_all
【发布时间】:2011-02-17 20:01:26
【问题描述】:

是否有一种方法可以像 read_all 一样,而不是使用 TCPSocket.read(no_of_bytes),可以简单地使用 TCPSocket.read_all。我首先通过 YAML::dump'ing 发送对象,然后发送它们,但我不知道如何以字节为单位获取它们的大小。提前谢谢,嗯。哦,我对任何形式的网络编程都非常非常陌生,所以请放轻松!

【问题讨论】:

    标签: ruby networking tcp send


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-28
        • 2014-01-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多