首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >windows环境下Java到C++的高效数据传输

windows环境下Java到C++的高效数据传输
EN

Stack Overflow用户
提问于 2008-11-05 22:08:51
回答 11查看 9.3K关注 0票数 7

我希望将大量数据(高达~1Gbit)从Java流式传输到C++应用程序(两者都在同一台机器上)。我目前在Linux上使用FIFO,但也需要Windows解决方案。

跨平台最多的方法似乎是本地套接字,但是: a)我不会从TCP校验和和复制到内核空间中获得巨大的开销吗? b)普通用户的防火墙不会尝试检查并可能阻止连接吗?

似乎更安全的解决方案可能是使用JNI和命名管道API (.\pipe\blah),让连接的两端都搞得一团糟。

这真的是我的两个最好的选择吗(人们会推荐哪一个?)谢谢!

EN

回答 11

Stack Overflow用户

发布于 2008-11-05 23:12:49

你应该看看谷歌的Protocol Buffers,它同时支持C++和Java。

票数 7
EN

Stack Overflow用户

发布于 2008-11-05 22:16:26

命名管道将比TCP更有效,但是如果只使用共享内存块呢?

我不知道Java端存在哪些原语来与共享内存交互,但从C++端来看,访问共享内存中的数据比从套接字或命名管道中读取数据更有效。您必须实现自己的流控制和阻塞原语,但这些可以相当直接。

票数 5
EN

Stack Overflow用户

发布于 2008-11-05 22:18:50

我会使用本地套接字,正如您所说的,这是最具跨平台的方法。

内核用户空间拷贝应该不是问题,因为您可以选择的任何其他方法都将需要这种类型的拷贝,可能共享内存除外。它在每个Unix系统上都可用,而且Windows也有自己的doing it方式。

要在Java中使用共享内存,唯一的方法是通过您自己的.DLL/.SO和JNI访问它来实现它。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/266913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档