在Windows上高效地从Java传输数据到C++

7
我想要从Java向C++应用程序(位于同一台机器上)流传大量数据(最高可达1 Gbit)。我目前在Linux上使用FIFO,但也需要一个Windows解决方案。
最具跨平台性的方法似乎是使用本地套接字,但是: a) 我会不会因为TCP校验和复制到/从内核空间而产生巨大开销? b) 普通用户的防火墙会不会尝试检查并可能阻止连接?
似乎更安全的解决方案是使用JNI和命名管道API (\.\pipe\blah),这将使连接的双方都变成一个非常混乱的特定于平台的状况。
这真的是我的两个最佳选择吗?哪个更受人们推荐呢? 谢谢!
11个回答

-2
我建议不要使用JNI,因为它非常难以调试。如果C++代码出现段错误或抛出未捕获的异常,你的JVM将会崩溃,而你将无法知道原因。

这不是真的。你可以通过连接到JVM来调试JNI代码。 - JesperE
如果你在PC上运行,那么你是正确的。但是在我的工作中,我们正在开发运行于Linux系统上的嵌入式系统,遗憾的是它没有本地调试器,甚至没有gdb。因此,当jni代码崩溃时,很难弄清楚原因。 - Dima

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接