gpt4 book ai didi

Java 套接字 : How to send and serialize object between multiple applications

转载 作者:行者123 更新时间:2023-12-02 09:36:12 25 4
gpt4 key购买 nike

我有 2 个 Maven 应用程序,它们应该通过服务器套接字和套接字进行通信。如果可能的话,我想将数据作为 Java 对象发送,但为此我需要这两个项目都包含该对象的类。

如果可能的话,我不想用该类创建第三个 Maven 项目并将其作为依赖项添加到服务器和客户端项目中。还有其他办法吗?

感谢您的回答!

最佳答案

您可以将服务器项目作为客户端项目的子项目,这意味着您的服务器可以访问客户端需要的所有类,以及一些额外的类。

或者,您可以创建一个包含共享类的 JAR,并使用 mvn install 将其安装到您的本地(或远程,如果您有访问权限)maven 存储库(此处的文档: https://maven.apache.org/guides/mini/guide-3rd-party-jars-local.html )

对于实际的数据传输,您可以使用 Serialized 接口(interface)序列化对象,但是这种方法存在许多问题:

  • 类更改很脆弱 - 如果更改类,旧对象可能会损坏,除非您手动管理
  • 仅限 Java - 例如,如果您决定做类似的事情,您将无法使用 C++ 编写客户端并使用 Java 编写服务器。
  • 框架不兼容 - 许多流行的框架主要适用于其他格式,并且无法保证兼容性。

相反,您可以使用:

  • JSON - 使用 Jackson Databind 或 Google Gson 库,它们灵活、强大且标准化
  • XML - 与 JSON 类似,但有一些细微的差别
  • Google Protobuf - 也有一些限制,但在资源受限的环境中被严重低估。
  • 自定义字符串格式 - 实现您自己的 toDataString()fromDataString() 方法。这仅对于小类来说才真正可行,因为大多数库都向您隐藏了许多有关 Unicode、转义字符、编码等的问题。这比其他方法风险更大。

一般来说,我会推荐 JSON,除非你有充分的理由不这样做。我个人使用 Jackson,这里是教程的链接:http://tutorials.jenkov.com/java-json/jackson-objectmapper.html

关于Java 套接字 : How to send and serialize object between multiple applications,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57496294/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com