如何在MATLAB中使用jeromq

5

jeromq是libzmq的Java实现。我有一个从jeromq源代码创建的.jar文件。但是,我无法从MATLAB调用jeromq中的类。我已经使用了addjavaclasspathaddjavalibrarypath,但仍然无法使其工作。是否有任何人在MATLAB中有简单的工作示例?


1
你能展示一下你实际使用的代码吗? - Suever
嗨@Suever。我能够在MATLAB中运行以下代码import org.zeromq.ZMQ;,并且没有收到任何错误。我将我下载的jeromq-0.3.5.jar文件放置在我正在工作的目录中,导入语句可以正常工作。你能给我指一个在MATLAB中创建简单客户端的例子吗? - kdheepak
你已经导入了它,你尝试创建一个实例了吗? - Suever
嗨@Suever,我已经成功让它工作了。如果其他人有兴趣做类似的事情,我已经附上了下面的链接。https://gist.github.com/kdheepak/dca9d20f6bea93de8756068f79dc60a2如果您有任何评论或建议改进此内容,请告诉我。编辑-我无法在此处添加代码格式。我已将其粘贴到gist中。 - kdheepak
3个回答

7
我已经在这里添加了答案,以供其他人参考。
% Author : Dheepak Krishnamurthy
% License : BSD 3 Clause

import org.zeromq.ZMQ;

ctx = zmq.Ctx();

socket = ctx.createSocket(ZMQ.REP);

socket.bind('tcp://127.0.0.1:7575');
message = socket.recv(0);
json_data = native2unicode(message.data)';

message = zmq.Msg(8);
message.put(unicode2native('Received'));
socket.send(message, 0);

socket.close()

3

我的Matlab 9.0.0.341360 (R2016a)需要以下代码而不是上面的导入:

javaclasspath('/path/to/jar/jeromq-0.4.3-SNAPSHOT.jar')
import org.zeromq.*

其余部分运行正常。

3

以下是我为了让事情正常工作所需做的步骤。


    javaclasspath('jeromq-0.5.1.jar')
    import org.zeromq.*;

    %subscribe to ZMQ feed
    context = ZContext();
    socket = context.createSocket(ZMQ.SUB); 
    success = false;
    while(~success)
        success = socket.connect('tcp://127.0.0.1:5996');
    end
    socket.subscribe("");
    socket.setTCPKeepAlive(1);

    %receive a message
    message = socket.recv(0); %nonblocking receive uses argument (1)

    %when done
    socket.close();


不确定为什么,但我似乎无法从jeromq中访问socket.subscribe()方法。不确定是否存在版本不匹配或编译问题。Java:jdk1.8.0_321,MATLAB 2021B,jeromq-0.5.3-SNAPSHOT.jar提交2a3645dbe6161774faa5011c132907c1be3c7687。 - Brian

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接