在Matlab中接收时,JeroMQ订户连接中断

问题描述 投票:0回答:1

[在Matlab中使用JeroMQ,当我尝试recv一条消息时,我的订户连接断开。我已经用Wireshark验证了这一点。我还注意到,TCP连接的关闭是由我的订阅端口而不是发布端口启动的。

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

ctx = zmq.Ctx();
socket = ctx.createSocket(ZMQ.SUB);
socket.connect('tcp://127.0.0.1:5996')
message = socket.recv(1) %this is when the connection gets dropped

Wireshark screenshot showing connection being closed

我不确定是否会有所帮助,但是我已经对此进行了调查,

socket.setSocketOpt(ZMQ.ZMQ_TCP_KEEPALIVE,1)

但是Matlab报告ZMQ_TCP_KEEPALIVE是无法识别的函数或变量。

我很感激this线程上的人们,让我从Matlab的JeroMQ入手。

matlab zeromq jeromq
1个回答
0
投票

我进行了更多研究,并参考了Github中一些朋友的建议。原来我的套接字直到我close()函数的代码中的后面才关闭。这是我的其他希望在Matlab中开始使用JeroMQ的人的工作代码。似乎其他帖子上的某些代码过时了。

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();
© www.soinside.com 2019 - 2024. All rights reserved.