Java 应用程序和 C 应用程序之间的通信

新手上路,请多包涵

我正在尝试为 Java 应用程序编写插件。该插件应该能够告诉 Java 应用程序新事件已被识别(观察者设计模式,轮询……这不是重点)。问题是事件是来自 Microsoft Kinect 控制器的跟踪手势(我正在使用 C++ 和 Microsoft Kinect SDK,因为我必须这样做)。这意味着我必须在 Java 应用程序和我的 Kinect 应用程序之间进行通信。我想到了类似适配器设计模式的东西,其中 Java 应用程序“包括”接口(c++ 头文件、dll 等)。首先我想到了 JNI,但后来我必须编写一个 DLL 将在两个应用程序端使用,对吗?我想到的另一件事是通过像 UDP 之类的协议(或更轻量级的协议?)提供手势数据。我听说的最后一件事是编写一个 COM+ 程序集……但老实说,我对 COM+ 的了解相当少。

 JAVA APPLICATION << ----- ??? ----- >> KINECT APPLICATION

原文由 seveves 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 383
2 个回答

我发现了一些示例,例如 此处此处此处,它们建议您使用共享内存结构或使用套接字。

我认为在这种情况下,让您的程序通过套接字进行通信将是最好的主意,因为您的应用程序不会那么紧密耦合,因此您只需要公开一个 IP、一个端口和一组命令。

据此,似乎可以在 Kinect 上创建一个 C++ 服务器,但除此之外我不能说太多,因为我从未参与过 Kinect 相关项目。

原文由 npinti 发布,翻译遵循 CC BY-SA 3.0 许可协议

也许你应该看看谷歌的 Protocol Buffers

由于您正在考虑 JNI 。我建议您参考这个 IBM 教程

JNI 允许 java 应用程序调用 c/c++ 方法,反之亦然。

如果您从 c++ 调用 java,也可以看看这个 问题

原文由 Sorter 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题