最好使用ObjectOut / InputStream或InputStreamReader / BufferedReader?

时间:2017-01-05 12:36:29

标签: java networking

所以我使用InputStreamReaderBufferedReaderPrintWriter制作了聊天应用程序。

我想知道:

使用ObjectInputStreamObjectOutputStream会更有效/更好吗?然后我可以通过类似客户端信息(不仅仅是字符串)发送对象,对吧?

如果是这样,我应该如何处理接收物体? (因为它可能是一个字符串,或者它可能是我正在发送的客户端对象)等。

1 个答案:

答案 0 :(得分:-1)

使用ObjectInputStream / ObjectOutputStream是一个不好的做法,原因如下:

    如果您同时使用两个版本的聊天程序,并且每个版本使用其他版本的序列化类,则
  • 序列化对象会引入兼容性问题。
  • 序列化对象包含大量元数据(将对象保存到文件中并查看),这些元数据没有任何功能意义,因此您将发送大量无意义的"数据。

如果您想在不同的聊天应用程序之间发送对象结构,请使用Jackson(https://github.com/FasterXML/jackson)和:

  • 将您发送的任何对象转换为字符串
  • 将您收到的任何字符串转换回对象

在互联网上搜索如何使用杰克逊,这是我出现的第一个链接之一: https://www.mkyong.com/java/jackson-2-convert-java-object-to-from-json/