2011-09-24 88 views
3

我想从我的C++程序以有效的方式传递字符串流到我的Java程序,但我不知道如何做到这一点。任何人都可以发布链接/解释有关如何实现这一点的基本想法?快速C++数据到Java传递

我想我写数据到一个文本文件,然后从我的Java程序读取文本文件,但我不知道,这将是速度不够快。我需要它,以便可以在16ms内传输一个字符串,以便我们可以在一秒钟内将约60个数据字符串传送到C++程序。

+1

为什么不简单地通过套接字流数据?例如使用标准输入和标准输出。 –

回答

2

文本文件可以很容易地写入和价值的内容与向上60串在仅仅几毫秒读取。

一些替代品,如果你发现你正在运行到反正定时的烦恼:

使用套接字编程。 http://beej.us/guide/bgnet/output/html/multipage/index.html。 套接字应该足够快。

还有其他的替代品,如TIBCO消息服务,这将是一个数量级比你所需要的速度更快:http://www.tibco.com/

另一种方法是使用一个MySQL表来传递数据,并有可能只需设置一个环境变量,以表明应该查询最近条目的表格。

或者我想你可以只使用一个环境变量本身传达的所有信息的 - 60个字符串不是很多。

前两个选项是更体面的解决方案虽然。

+0

您是否知道Tibco用于IPC的操作系统? –

+0

对于文本文件,您将如何确保写保护?这样在写入期间不会发生读取事件?它是由操作系统自动完成的吗? – Andrew

+0

我相信他们的一些产品使用共享内存。除此之外,我不知道。 – loki11

0

差不多你这样做的任何方式将是快。一个文件可能是最慢的,它可能总共大约10ms!如果你还必须创建一个新的连接(它是连接,而不是最耗时的数据),那么套接字也是类似的。使用套接字的优点是发送方和接收方知道已经产生了多少数据。如果您使用的是文件,则需要另一种说法,文件现在已完成,您应该阅读它。例如的插座;)

如果C++和Java是在相同的过程中,可以使用的ByteBuffer包裹C数组和导入到Java在大约1微秒。

+0

如何到ByteBuffer的事情?你能提供一个链接吗? –

+0

我认为你的意思是比Javadoc涵盖的内容更具体。 https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html如果是这样,你有什么想法?顺便说一句,从那时起我写了一个图书馆,这是这个战略的延伸https://github.com/OpenHFT/Chronicle-Bytes –