将用C#编写的程序中的数据导入Java程序

时间:2013-04-05 16:53:29

标签: java c# executable code-translation

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

  1. 寻找一个在Java中运行C#类的程序,然后包含将传入数据直接处理到我的Java程序中的C#类[这似乎不太有希望 - 我似乎无法获得jni4net,这是建议在其他帖子中工作]
    1. 在C#中编写另一个程序,将正在处理的整数保存到特定的内存位置。编译程序。然后从Java源代码中运行可执行文件,并在Java代码中编写一些回调,当特定内存位置的整数发生变化时,这些回调会被记录下来并记录这些新数字是什么[不知道如何开始这个! ]
    2. 有没有人对可能最不痛苦的方法有任何建议?

3 个答案:

答案 0 :(得分:3)

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

因此,可以采用任何允许通信的方式:

  1. 命名管道
  2. 套接字
  3. TCP连接
  4. 共享内存
  5. 在选项中,我建议使用命名管道,因为它们最容易掌握并且没有端口不可用等问题。

    请参阅: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描述了使用两种环境中的管道的端到端方式。

答案 1 :(得分:0)

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

此处有更多信息:http://www.codeproject.com/Articles/245622/Using-the-Java-Native-Interface-in-Csharp

答案 2 :(得分:0)

过去我必须做类似的事情,以便将数据从Java系统导入Excel(通过RTD API),最后采用套接字协议方法。

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

如果您最终使用更复杂的API,包含多条消息等,您可能需要查看Google Protocol Buffers,因为有.Net和Java实现。