我很难解释我需要实施的内容,所以我真的希望能够做到。
我有一个使用ipc消息队列发送和接收数据的C进程。我还有一个Java应用程序需要向/从该C进程发送和接收消息,因此它需要访问该队列。
我一直在寻找一种方法来实现这一点,我认为JNA(java natice access)可能是一个解决方案。问题是,显然,我需要一个DLL,所以我可以映射和使用我需要的方法(msgget,msgsnd,msgrcv,msgctl),但我不知道我应该加载哪个DLL。我很陌生,所以我感到迷茫。
是否有另一种方法可以让这两个应用程序使用消息队列进行通信?或者JNA是一个很好的解决方案,我只需要找到要加载的正确DLL?
提前致谢。
答案 0 :(得分:1)
如果这是一个选项,您可以更改C进程以使用不同的通信方式。根据我的经验,套接字是在c和java程序/进程之间进行通信的最麻烦的方式。
答案 1 :(得分:0)
使用JNA是完全合法的,但不知何故很棘手。
这篇文章“Java POSIX IPC”可能有一些关于如何在Java或使用Java库中执行此操作的线索。
答案 2 :(得分:0)
如果你能找到depend.exe(我知道VS 2005有它),它可以显示每个dll导出的功能。在你的c程序上运行它以查看函数的来源,如果它们是真的,你可以使用JNA。这些函数实际上可能只是包装器,如果需要,您需要使用JNI