- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试使用 java 风格的 zmq 来测试在我的项目中使用 PGM over TCP 的好处。因此,我更改了 zmq 指南中的天气示例,以使用 epgm 传输。一切都编译并运行,但没有发送或接收任何内容。如果我将传输更改回 TCP,服务器会接收从客户端发送的消息,并且我会得到我期望的控制台输出。
那么,使用PGM有什么要求呢?我更改了传递给绑定(bind)和连接方法的字符串,以遵循 zmq_pgm 的 zmq api:“transport://interface;multicast address:port”。那行不通。每当我尝试使用此格式时,我都会收到无效参数错误。因此,我通过删除“有效”的界面和分号来简化它,但我没有得到任何结果。
我还没有找到使用 pgm/epgm 的 jzmq 示例,并且 java 绑定(bind)的 api 文档没有为传递给绑定(bind)或连接的端点定义适当的字符串格式。那么我在这里缺少什么?我必须为客户端和服务器使用不同的主机吗?
值得注意的是,我在 VirtualBox VM(Ubuntu 14.04/OSX Mavericks 主机)上运行代码。我不确定这是否与我目前面临的问题有关。
服务器:
public class wuserver {
public static void main (String[] args) throws Exception {
// Prepare our context and publisher
ZMQ.Context context = ZMQ.context(1);
ZMQ.Socket publisher = context.socket(ZMQ.PUB);
publisher.bind("epgm://xx.x.x.xx:5556");
publisher.bind("ipc://weather");
// Initialize random number generator
Random srandom = new Random(System.currentTimeMillis());
while (!Thread.currentThread ().isInterrupted ()) {
// Get values that will fool the boss
int zipcode, temperature, relhumidity;
zipcode = 10000 + srandom.nextInt(10000) ;
temperature = srandom.nextInt(215) - 80 + 1;
relhumidity = srandom.nextInt(50) + 10 + 1;
// Send message to all subscribers
String update = String.format("%05d %d %d", zipcode, temperature, relhumidity);
publisher.send(update, 0);
}
publisher.close ();
context.term ();
}
}
客户:
public class wuclient {
public static void main (String[] args) {
ZMQ.Context context = ZMQ.context(1);
// Socket to talk to server
System.out.println("Collecting updates from weather server");
ZMQ.Socket subscriber = context.socket(ZMQ.SUB);
//subscriber.connect("tcp://localhost:5556");
subscriber.connect("epgm://xx.x.x.xx:5556");
// Subscribe to zipcode, default is NYC, 10001
String filter = (args.length > 0) ? args[0] : "10001 ";
subscriber.subscribe(filter.getBytes());
// Process 100 updates
int update_nbr;
long total_temp = 0;
for (update_nbr = 0; update_nbr < 100; update_nbr++) {
// Use trim to remove the tailing '0' character
String string = subscriber.recvStr(0).trim();
StringTokenizer sscanf = new StringTokenizer(string, " ");
int zipcode = Integer.valueOf(sscanf.nextToken());
int temperature = Integer.valueOf(sscanf.nextToken());
int relhumidity = Integer.valueOf(sscanf.nextToken());
total_temp += temperature;
}
System.out.println("Average temperature for zipcode '"
+ filter + "' was " + (int) (total_temp / update_nbr));
subscriber.close();
context.term();
}
}
最佳答案
有几种可能性:
--with-pgm
选项编译的:see here - 但如果您没有看到“协议(protocol)不受支持”,这似乎不是您的问题pgm
需要 root 权限,因为它需要能够创建原始套接字...但 epgm
不需要,因此它不应该是您的问题(我只是因为您使用术语“pgm/epgm”而提出它,并且您应该意识到它们并非在所有情况下都同样可用)因此,客户端和服务器需要不同的主机。
关于java - 使用 JZMQ 与 EPGM 传输不发送或接收数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23847589/
我正在尝试让 JZMQ 代码在 Hadoop 集群上的一个节点上运行。我在该节点上的 -/usr/local/lib 目录下安装了必要的 native jmzq 库文件。 这是列表 -libjzmq.
我花了一天的时间来解决这个问题,所以如果您计划使用 ZeroMQ 和 java 绑定(bind)设置 CentOS 6.4,也许它可以节省您的时间。 从 github 的源代码安装了 jzmq、lib
查看 ZeroMQ 绑定(bind)。我发现 jzmq last release was almost three years ago .此绑定(bind)是否已弃用? 另一方面,有一个 ZeroMQ
有没有办法检查 JZMQ(zmq 的 java 绑定(bind))套接字是否已连接? ZContext zmqContext = new ZContext(); ZMQ.Socket workerSo
我已经在运行 CentOS 的 VM 上安装了 0MQ,并且我有一个基于 C 的应用程序可以愉快地使用它。但是,我无法让 Java 应用程序通过 JZMQ 绑定(bind)工作。这是我得到的错误: j
简单的问题。为什么在 Java 上“移植”zmq 并将其称为 JeroMQ 是个好主意? 最佳答案 JeroMQ是ZeroMQ社区的官方项目;它是 C++ libzmq 库的完整移植,支持版本 3.2
我的 Java 服务器在使用 JZMQ 的情况下运行良好一段时间。突然断言失败:check () (msg.cpp:220) 在JAVA中无法捕获。并且 java 进程本身已关闭。看起来像是 JNI
大家好,我正在尝试按照位于:https://github.com/nathanmarz/storm/wiki/Installing-native-dependencies 的指示进行操作在 Ubunt
运行以下命令安装 jzmq git clone https://github.com/zeromq/jzmq.git cd jzmq ./autogen.sh ./configure touch sr
我希望这个程序中的线程以锁步方式工作。但是,发送方在等待接收方 catch 之前发送了约 60000 条消息。我对 HWM 有什么误解? 如果我不启动接收线程,那么发送方会在尝试发送第二条消息时阻塞。
我有一个使用外部 dll (zmq) 的 Java 应用程序。当我在 Eclipse 中以 Debug模式运行它时,一切正常。但是,当我将应用程序导出为 Runnable JAR 文件然后尝试运行它时
我在一个交易引擎上工作,在运行时,我从 engine.log 中获取日志,如下所示, 2018_01_02_03_28_20_684 INFO ZMQCommunicatorService REMO
我正在尝试使用 java 风格的 zmq 来测试在我的项目中使用 PGM over TCP 的好处。因此,我更改了 zmq 指南中的天气示例,以使用 epgm 传输。一切都编译并运行,但没有发送或接收
我使用 homebrew 安装了 zmq,然后从 github master 安装了 jzmq。 我收到此错误: java.lang.UnsatisfiedLinkError: no jzmq in
有人知道 ZeroMQ 的 java 绑定(bind)“jzmq”是否可以与 ZeroMQ 版本 3.x.x 一起使用吗?没有关于此的官方信息。有人有想法吗? 最佳答案 确实不好找。但是,浏览 jzm
尝试遵循以下指示:http://github.com/zeromq/jzmq 我使用 Homebrew 安装了 pkg-config,然后运行以下命令: ./autogen.sh 。/配置 配置失败:
我想用java运行zmq。我曾尝试像question那样做 我编译了项目https://github.com/zeromq/libzmq然后https://github.com/zeromq/jzmq
目前,我在让 JZMQ 在 Ubuntu(10.04.2 LTS 服务器,x86)上编译时遇到了严重的问题。我已经从源代码安装了 0MQ,但是为 JZMQ 构建的 debian 包失败了: dpkg-
我有一个使用 ZMQ 的 Java 应用程序。我已经能够在我的 Win7 PC 上运行它,我将 jzmq.dll 放在 jar 可执行文件所在的同一文件夹中,然后我通过命令“java -jar mya
我使用 OpenPGM 5.2.122 在 Java (JDK 7) 中针对 ZeroMQ PUB 套接字通过 Windows 7 上的 MULTICAST channel 发布数据编写了一个简单的测
我是一名优秀的程序员,十分优秀!