【问题标题】:Commucation Between C++ Client and Java ServerC++ 客户端和 Java 服务器之间的通信
【发布时间】:2014-03-20 05:57:05
【问题描述】:

我正在开发一个使用 HTTP 与服务器通信的客户端应用程序。客户端使用 C++,服务器组件使用 J2EE。我能够成功地在客户端和服务器之间交换数据。现在我想将信息封装在客户端的 C++ 对象中,并在 HTTP 请求中将其发送到服务器。我的服务器收到数据后应该将 C++ 对象反序列化为 java 对象。

我的问题是,我想知道我们是否可以通过上述方式交换对象,如果可以实现,有人可以通过提供在线教程或代码示例的参考来帮助我吗?

【问题讨论】:

  • 为什么不直接使用 json 或者更简单的方法呢?我不认为你所要求的可以做到。见stackoverflow.com/questions/4457615/…
  • 其实在我的Server端我希望它作为Java对象,我可以将Server上接收到的JSON对象转换为Java Class Object吗?
  • 你当然可以,使用像jackson.codehaus.org这样的json库
  • 谢谢@user2310289.. 将尝试并发布 cmets...
  • 成功了.. 谢谢...

标签: java c++ serialization deserialization


【解决方案1】:

如果您将普通的旧 C++ 对象发送到服务器,那将是一场噩梦。您需要在客户端和服务器之间有一个通用协议。 JSON 是一个不错的选择。流程是这样的:

C++ 对象 -> 序列化为 -> JSON -> 反序列化为 -> Java 对象

使用 JSON Spirit 之类的东西将 C++ 对象序列化为 JSON。要将 JSON 反序列化为 Java 对象,Gson 是一个安全的选择(它甚至可以即时进行转换)。您可以在各自的主页上找到这两个项目的文档。

【讨论】:

    【解决方案2】:

    您需要将对象序列化为 XML、JSON 或类似的东西。

    您不能使用特定于技术的序列化(例如 Java 的 RMI),因为您正在跨堆栈工作(无论如何这是不好的做法)。

    不了解 c++,但在 java 中,使用 JAXB 将对象绑定到 XML/JSON 是微不足道的。如果您要公开一个 Web 服务,您可以采用简单的方法:REST(使用 JAX-RS)或稍微困难但技术上更好的方法(因为它具有更多功能):SOAP(使用 JAX-WS)。

    如果您阅读了相关的 Web 服务堆栈,那么在 Java EE 中公开此类 Web 服务是微不足道的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-10
      • 2016-07-21
      • 1970-01-01
      相关资源
      最近更新 更多