Java套接字:DataOutputStream还是OutputStream?

问题描述 投票:15回答:3

我还是比较新的插座,我还没有看到有关这个主题的任何信息。

要写入连接的套接字,您可以使用

socket.getOutputStream().write

或者从套接字DataOutputStream创建一个新的OutputStream并写入。

  • 什么被认为是“良好实践”,使用DataOutputStream或OutputStream?我在互联网上找到的大多数the examples使用DataOutputStream(发送字符串,例如双向聊天)。
  • 使用DataOutputStream而不是OutputStream有什么优点或缺点吗?
  • 例如,在发送文件时,这两者之间的性能是否存在差异?
java sockets networking dataoutputstream
3个回答
11
投票

DataOutputStream确保数据以独立于平台的方式进行格式化。这是一个很大的好处。它确保对方的一方能够阅读它。两者之间没有显着的性能差异。

只有在传输原始二进制数据时才应使用OutputStream


2
投票

如果您需要额外的API,请使用DataOutputStream。如果你不这样做,那就没有意义了。但是,如果你正在进行小写操作,你应该总是将套接字的输出流包装在BufferedOutputStream中,在适当的时候,即在你读取套接字之前,你应该将flush()包装起来。


-1
投票

刚才我在使用SOAP服务时开始了解dataoutputstream和outputstreamwriter之间的区别...我试图通过请求XML传递阿拉伯数据但是在响应XML中我得到一些垃圾字符代替阿拉伯数据然后我试过编码(UTF-8)请求,但没有这样的方法在DataOutputStream中进行编码,因为您可以在发送请求之前在OutputStreamWriter中对请求进行编码。 OutputStreamWriter out = new OutputStreamWriter(con.getOutputStream(),“UTF-8”); out.write(inputXML);

© www.soinside.com 2019 - 2024. All rights reserved.