Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通信Java应用程序和C++;使用posix ipc消息队列处理_Java_C++_Ipc - Fatal编程技术网

通信Java应用程序和C++;使用posix ipc消息队列处理

通信Java应用程序和C++;使用posix ipc消息队列处理,java,c++,ipc,Java,C++,Ipc,我很难解释我需要实现什么,所以我真的希望我能够做到 我有一个C进程,它使用ipc消息队列发送和接收数据。我还有一个Java应用程序,它需要向C进程发送和接收消息,因此它需要访问该队列 我一直在寻找实现这一点的方法,我认为JNA(java natice access)可能是一个解决方案。问题是,显然,我需要一个DLL,这样我就可以映射和使用我需要的方法(msgget、msgsnd、msgrcv、msgctl),但我不知道应该加载哪个DLL。我对这方面还不太熟悉,所以我觉得很失落 有没有其他方法可以

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

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

我一直在寻找实现这一点的方法,我认为JNA(java natice access)可能是一个解决方案。问题是,显然,我需要一个DLL,这样我就可以映射和使用我需要的方法(msgget、msgsnd、msgrcv、msgctl),但我不知道应该加载哪个DLL。我对这方面还不太熟悉,所以我觉得很失落

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


提前感谢。

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


关于如何在Java中或使用Java库,这篇文章“”可能有一些线索。

如果你能找到depend.exe(我知道VS2005有),它可以向你展示每个dll导出的函数。在你的c程序上运行它,看看函数是从哪里来的,如果它们是真的,你可以使用JNA。这些函数实际上可能只是包装器,如果需要使用JNI,那么可以将C进程更改为使用不同的通信方式。根据我的经验,套接字是c和java程序/进程之间最简单的通信方式。

这是c进程必须加载的同一个DLL。(理想情况下是完全相同的DLL)我假设它是Windows的一部分。首先,感谢您的帮助。问题是我不确定我是否能理解。要在C程序中使用该方法,我只需要包括“sys/ipc.h”和“sys/msg.h”,但我不知道这些头文件是否是DLL的一部分(我到目前为止还没有使用DLL),或者像VictorAVU3所说的,我将不得不使用JNI,因为它们只是包装器。无论哪种方式,都可以使用相同的DLL。在这种情况下,IMHO使用JNI可能更容易,而且速度肯定会更快,我认为这是使用IPC的一部分。由于include出现在列表中,因此我开始了一个加载C POSIX库的非常小的示例。现在我有一个错误,但我将在以后发布它。再次感谢。谢谢你的回答。问题是我无法更改消息队列并使用套接字。至少,现在不行。谢谢你的回答。今天早上我在寻找答案的时候发现了,但这似乎是一个废弃的项目,不是吗?我的意思是,上次更新是3年前,这就是为什么我害怕尝试使用它。