Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java套接字:DataOutputStream还是OutputStream?_Java_Sockets_Networking_Dataoutputstream - Fatal编程技术网

Java套接字:DataOutputStream还是OutputStream?

Java套接字:DataOutputStream还是OutputStream?,java,sockets,networking,dataoutputstream,Java,Sockets,Networking,Dataoutputstream,我对sockets还是比较陌生的,我还没有看到关于这个主题的任何信息 要写入连接的套接字,可以使用 socket.getOutputStream().write 或者从套接字OutputStream创建一个新的DataOutputStream,并写入该套接字 使用DataOutputStream或OutputStream的“良好实践”是什么? 我在互联网上发现的大多数人都使用DataOutputStream(发送字符串,如双向聊天) 使用DataOutputStream而不是OutputSt

我对sockets还是比较陌生的,我还没有看到关于这个主题的任何信息

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

socket.getOutputStream().write

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

  • 使用DataOutputStream或OutputStream的“良好实践”是什么? 我在互联网上发现的大多数人都使用DataOutputStream(发送字符串,如双向聊天)
  • 使用DataOutputStream而不是OutputStream有什么优点或缺点吗
  • 例如,在发送文件时,这两者之间是否存在明显的性能差异

数据输出流
确保以独立于平台的方式格式化数据。这是最大的好处。它确保另一边的人能够阅读它。两者之间没有显著的性能差异


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

如果需要额外的API,请使用
DataOutputStream
。如果你不这样做,那就没有意义了。但是,如果您正在进行小的写入,那么您应该始终将套接字的输出流包装在一个
BufferedOutputStream
中,并且在适当的时候,也就是在您阅读套接字之前,例如。

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

那么,如果您想创建一个能够发送文件的独立于平台的java应用程序,您有什么建议呢?即使文件只包含原始字节,您仍然可以使用DataOutputStream发送它们,因此,我在所有情况下都会选择DataOutputStream。
DataOutputStream
only“确保数据以独立于平台的方式格式化”,如果您使用它提供的额外API。它的
write()
方法没有神奇的属性。如果您只使用这些功能,(a)根本没有性能差异,(b)使用
DataOutputStream
没有任何意义。如果您使用的是额外的API,那么就没有什么可以与之相比的了。因此,关于性能差异的陈述基本上是毫无意义的。