【问题标题】:Processing received data from socket处理从套接字接收到的数据
【发布时间】:2011-05-22 16:24:03
【问题描述】:

我正在开发一个套接字应用程序,我的应用程序需要通过套接字接收 xml 文件。收到的 xml 文件的大小从 1k 到 100k 不等。我现在正在考虑先将收到的数据存储到一个临时文件中,然后将其传递给 xml 解析器。我不确定这是否是正确的方法。

另一个问题是如果我想按照上面提到的那样做,我应该将文件对象或文件路径传递给 xml 解析器吗?

提前致谢,

问候

【问题讨论】:

    标签: java sockets io


    【解决方案1】:

    直接发送给解析器。这就是浏览器所做的。添加临时文件会耗费您的时间和空间,但没有任何实际好处。

    【讨论】:

    • 感谢 EJP。如果来自套接字的 InputStream 在 XML 数据之前包含一些前面的数据,是否可以通过在将其传递给解析器之前执行一些 read() 方法调用来跳过这些数据?
    • 当然。如果您碰巧知道确切的长度,甚至可以跳过()它。
    【解决方案2】:

    您认为在您拥有的任何输入流周围放置一个 BufferedReader 会起作用吗?它不会把它放到一个临时文件中,但它会让你挂在那个数据上。您可以设置所需的任何大小的 BufferedReader。

    您是否编写了您的 XML 解析器?如果你没有,它将接受什么作为参数?如果你确实写了它,你是在问效率吗?也就是说,您的解析器应该要求哪个对象、路径或文件最有效?

    【讨论】:

    • 嗨 Raven,我没有编写自己的 XML 解析器,我使用的 API 将 InputStream 作为解析参数。
    【解决方案3】:

    您不必将数据从套接字存储到任何文件。只需将整个DataInputStream 读入一个字节数组,然后您就可以做任何您需要的事情。例如。如果需要,使用 xml 输入创建一个 String 以提供解析器。 (我假设 tcp 套接字)。
    如果有前面的数据,则跳过它们以便将实际的 xml 数据提供给解析器。

    【讨论】:

      猜你喜欢
      • 2013-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-28
      • 1970-01-01
      • 2014-03-18
      • 2016-08-04
      • 2013-03-29
      相关资源
      最近更新 更多