2

我很难解释我需要实现什么,所以我真的希望我能够做到。

我有一个 C 进程,它使用 ipc 消息队列来发送和接收数据。我还有一个 Java 应用程序需要向该 C 进程发送和接收消息,因此它需要访问该队列。

我一直在寻找一种方法来做到这一点,我认为 JNA(java natice 访问)可能是一个解决方案。问题是,显然,我需要一个 DLL,以便映射和使用我需要的方法(msgget、msgsnd、msgrcv、msgctl),但我不知道应该加载哪个 DLL。我对此很陌生,所以我感到迷茫。

还有另一种方法可以让这两个应用程序使用消息队列进行通信吗?还是 JNA 是一个很好的解决方案,我只需要找到正确的 DLL 来加载?

提前致谢。

4

3 回答 3

1

如果这是一个选项,您可以更改 C 进程以使用不同的通信方式。以我的经验,套接字是在 c 和 java 程序/进程之间进行通信的最不麻烦的方式。

于 2012-08-08T18:11:41.397 回答
0

如果你能找到depend.exe(我知道VS 2005 有),它可以显示每个dll 导出的函数。在您的 c 程序上运行它以查看函数的来源,如果它们是真实的,您可以使用 JNA。这些函数实际上可能只是包装器,如果是这样,您需要使用 JNI

于 2012-08-08T18:11:14.203 回答
0

使用 JNA 是完全合法的,但有点棘手。

这篇文章“ Java POSIX IPC ”可能有一些关于如何在 Java 中或使用 Java 库中做到这一点的线索。

于 2012-08-08T18:09:48.653 回答