将用c#编写的程序中的数据转换为Java程序

本文关键字:程序 转换 Java 数据 将用 | 更新日期: 2023-09-27 18:07:55

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

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

用c#编写另一个程序,将正在处理的整数保存到特定的内存位置。编译程序。然后从Java源代码中运行可执行文件,并在Java代码中编写某种回调,当特定内存位置的整数发生变化时,回调会获取并记录这些新数字是什么[不确定如何开始这个!)

谁有什么建议,什么可能是最不痛苦的方法?

将用c#编写的程序中的数据转换为Java程序

听起来您需要某种形式的进程间通信机制。

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

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

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

参见:如何从Java中打开Windows命名管道?

和:在c#中为IPC使用命名管道

这篇文章:使用命名管道在c#和Java之间进行通信描述了从两个环境中使用管道的端到端方法。

您可以将Java和c#程序合并为一个,并使用JNI来桥接c#/Java接口。JNI基本上允许从Java调用c#方法,反之亦然。我想这将是同样难以编码套接字,加上会有一些加速。

更多信息在这里:http://www.codeproject.com/Articles/245622/Using-the-Java-Native-Interface-in-Csharp

为了将数据从Java系统获取到Excel中(通过RTD API),我不得不在过去做类似的事情,并最终采用套接字协议方法。

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

如果你有一个更复杂的API,有多个消息等,你可能想看看Google Protocol Buffers,因为有。net和Java实现。