我希望将大量数据(最高~1 Gbit)从Java流式传输到C++应用程序(两者都在同一台机器上).我目前在Linux上使用FIFO,但也需要Windows解决方案.
最跨平台的方法似乎是一个本地套接字,但是:a)我不会从TCP校验和从内核空间复制和从内核空间复制中获得巨大的开销,并且b)普通用户的防火墙不会尝试检查和也许阻止连接?
似乎更安全的解决方案可能是使用JNI和命名管道API(\.\ pipe\blah),这使得连接两端的平台特定混乱.
这些真的是我最好的两个选择(人们会推荐哪些?)谢谢!
命名管道比 TCP 更有效,但是只使用共享内存块怎么样?
我不知道 Java 端存在哪些用于与共享内存接口的原语,但从 C++ 端来看,访问共享内存中的数据比从套接字或命名管道中读取数据更有效。您必须实现自己的流控制和阻塞原语,但这些可能相当简单。
归档时间: |
|
查看次数: |
8926 次 |
最近记录: |