我正在与 Pupil Labs 合作,这是一个巨大的眼睛/瞳孔跟踪开源软件。整个代码是用 Python 编写的。所谓Pupil Remote基于 ZeroMQ。
如果我开始运行 Filter Messages一切安好。出于我的目的,我需要“翻译”Filter Messages进入 Java,因为我创建了一个 Android 应用程序,它应该调用一个客户端,该客户端的目的是充当 python 客户端。
这是我到目前为止所做的:
import android.annotation.SuppressLint;
import org.zeromq.ZMQ;
import java.nio.charset.Charset;
import static java.lang.Thread.sleep;
public class ZeroMQClient {
@SuppressLint("NewApi")
public static void requestGazeData() {
ZMQ.Context context = ZMQ.context(1);
ZMQ.Socket subscriber = context.socket(ZMQ.SUB);
System.out.println("Connecting to server...");
subscriber.connect("tcp://xxx.x.x.x:50020");
System.out.println("Connected");
String gaze = "gaze";
subscriber.subscribe(gaze.getBytes(Charset.forName("UTF-8")));
while (true) {
String msg = subscriber.recvStr();
System.out.println(msg);
subscriber.close();
context.term();
}
}
}
现在如您所料,为什么我要问您,没有任何反应,我没有从 Pupil Labs 服务器收到任何数据。我将自己定位于 this post ,但不幸的是,它对我没有用。 IP 地址和端口也与服务器上的相同。它既不在本地也不在远程工作。
对任何答案都很满意,因为我一直坚持这一点。
最佳答案
由于在我的实现方面建立正确,实际问题是防火墙,它只是阻止了连接。通过发布我的解决方案,我希望能够帮助这个问题的 future 访问者。
关于java - 如何从 Java SUB 客户端 (ZMQ) 上的 python ZeroMQ PUB 服务器接收数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49158547/