有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

从C语言编写的程序中获取数据到Java程序中

我有一个用C#编写的程序,它从第三方服务器接收数据并将其处理成一系列整数(它们正在快速流式传输)。该程序是用C语言编写的,因为第三方提供类来处理数据,但只提供C语言。我希望将这些整数以流式方式在Java程序中使用(因此,一旦C#程序对它们进行流式处理,我希望在Java程序中使用整数)。第二个程序是用Java编写的,因为另一个第三方只用Java提供它们的类(这是必需的)。所以我的猜测是-

  1. 寻找一个在Java中运行C#类的程序,然后将处理传入数据的C#类直接包含到我的Java程序中[这似乎不太有希望-我似乎无法让jni4net工作,这是在其他帖子中建议的]

  1. 用C#编写另一个程序,将正在处理的整数保存到特定的内存位置。编译程序。然后从Java源代码中运行可执行文件,并在Java代码中编写某种回调函数,当特定内存位置的整数发生更改时,这些回调函数将拾取并记录这些新数字[不确定如何开始!]

有没有人对最不痛苦的方法有什么建议


共 (3) 个答案

  1. # 1 楼答案

    在过去,为了将数据从Java系统(通过RTDAPI)导入Excel,我不得不做一些类似的事情,最后采用了套接字协议方法

    如果你有一个非常简单的数据集(比如你上面提到的整数流),这应该非常简单——只需查看Java Socket和ServerSocket类的文档,以及相应的C#Socket类

    如果你最终得到一个更复杂的API,包含多条消息等,你可能想看看Google协议缓冲区,因为两者都有。Net和Java实现

  2. # 3 楼答案

    听起来你想要某种形式的进程间通信机制

    因此,任何允许沟通的东西都可以使用:

    1. 命名管道
    2. 插座
    3. TCP连接
    4. 共享内存

    在这些选项中,我建议使用命名管道,因为它们最容易掌握,并且没有端口不可用等问题

    见:How to open a Windows named pipe from Java?

    和:Using Named Pipes for IPC in C#

    这篇文章:Using Named Pipes to communicate between C# and Java描述了从两种环境使用管道的方法和端到端的方法