如何在 MATLAB 中使用 jeromq
How to use jeromq in MATLAB
jeromq 是 libzmq 的 Java 实现。我有一个从 jeromq 源创建的 .jar 文件。但是,我无法从 MATLAB 调用 jeromq 中的 class。我已经使用了 addjavaclasspath
和 addjavalibrarypath
,但仍然无法正常工作。有人有 MATLAB 中的简单工作示例吗?
我在这里添加了答案以供参考,以防其他人感兴趣。
% 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()
我的 Matlab 9.0.0.341360 (R2016a) 需要以下代码而不是上面的导入:
javaclasspath('/path/to/jar/jeromq-0.4.3-SNAPSHOT.jar')
import org.zeromq.*
其余工作正常。
这是我必须做的事情才能正常工作。
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 是 libzmq 的 Java 实现。我有一个从 jeromq 源创建的 .jar 文件。但是,我无法从 MATLAB 调用 jeromq 中的 class。我已经使用了 addjavaclasspath
和 addjavalibrarypath
,但仍然无法正常工作。有人有 MATLAB 中的简单工作示例吗?
我在这里添加了答案以供参考,以防其他人感兴趣。
% 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()
我的 Matlab 9.0.0.341360 (R2016a) 需要以下代码而不是上面的导入:
javaclasspath('/path/to/jar/jeromq-0.4.3-SNAPSHOT.jar')
import org.zeromq.*
其余工作正常。
这是我必须做的事情才能正常工作。
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();