小编use*_*579的帖子

Tibco RV发送和监听参数混淆

嗨,我是Tibco RV的新手.在阅读了Tibco Rendezvous Concept之后,我仍然对传输参数感到困惑:服务,网络,守护进程.

因此,从概念上讲,每台机器上只运行一个守护程序.所以当使用tibrvsend时:

tibrvsend -service 2323 -network "someIPAddress" -daemon "myDaemon" MESSAGE
Run Code Online (Sandbox Code Playgroud)

这是否意味着我在本地主机上使用端口2323发送消息,通过守护程序myDaemon(可能在远程),到网络comeIPAddress

使用tibrvlisten时:

tibrvListen -service 2323 -network "someIPAddress" -daemon "myDaemon"
Run Code Online (Sandbox Code Playgroud)

这是否意味着我正在使用任何可用端口(我的本地主机上的任何可用守护程序)监听来自myDaemon"已发布到someIPAddress网络的端口2323 " 的消息?

另一个问题是,书"Tibco RV Concept"提到相同的服务不能绑定到两个网络.它是否只适用于生产者机器(因为我们没有为监听器机器指定端口)?因此,如果我们这样做会发生错误:

tibrvsend -service 2323 -network "net1" MESSAGE
Run Code Online (Sandbox Code Playgroud)

tibrvsend -service 2323 -network "net2" MESSAGE
Run Code Online (Sandbox Code Playgroud)

同时(如果我们连续做,那应该没问题吧?)

但是对于听众来说:

tibrvlisten -service 2323 -network "net1"
Run Code Online (Sandbox Code Playgroud)

tibrvlisten -service 2323 -network "net2"
Run Code Online (Sandbox Code Playgroud)

应该完全没问题?(否则它意味着生产者需要知道彼此的端口号以避免冲突)

如果我对这些概念完全搞砸了,你能用例子解释一下吗?

messaging tibco tibco-rv

5
推荐指数
1
解决办法
1万
查看次数

float从jni返回到java收到了错误的结果

我有一个函数返回从JNI本机到Java的float.这应该是一个简单的电话,但我得到了奇怪的结果.

在我的测试用例中,我将值1.61863e + 010返回到java中.代码很简单:

cout << result << endl;  cout.flush(); // get 1.61863e+010
return (jfloat) result;
Run Code Online (Sandbox Code Playgroud)

(只是为了澄清,如果cout.precision(6),我得到16186300000.000000)

但是我的Java代码正在接收1.61863004E10.我用的时候

DecimalFormat formatter = new DecimalFormat("###,###.######");
System.out.println(formatter.format(result));
Run Code Online (Sandbox Code Playgroud)

我得到16,186,300,416.

416这个来自哪里?我认为jfloat和float都是32位IEEE浮点数,所以不应该有任何精度损失.

非常感谢.

java floating-point java-native-interface

2
推荐指数
1
解决办法
1250
查看次数