如何使用两个程序在一个共享内存中读/写一个值(一个在C中,另一个在C#中)

时间:2017-06-07 05:12:53

标签: c#

有人可以帮我提供一些信息和一些代码示例吗? 我需要使用两个程序(一个在C中,另一个在C#中)在共享内存中读/写一个值。我必须使用一个缓冲区来写入值。该缓冲区也是一个结构。

客户端应该用C#编写,服务器用C编写。

感谢。

1 个答案:

答案 0 :(得分:0)

你有3个解决方案:

  1. 如果两台应用在同一台计算机上运行,​​则可以使用共享内存。网上有很多关于在C#和C / C ++中使用共享内存的例子。在C#中,共享内存函数包含在.Net Framework中。在C / C ++中,您可以直接使用Windows API或使用诸如boost之类的库。

  2. 您可以在这些进程之间使用网络通信。如果两个应用程序都在同一台计算机上运行,​​则可以使用地址127.0.0.1(localhost)进行网络间通信,而无需知道IP地址。对于网络通信,Web上还有许多源代码示例,包括C#和C / C ++。您最好使用TCP套接字,并使用序列化程序/反序列化程序(如json),或使用自定义格式在这些进程之间进行通信。

  3. 如果数据量和这些应用程序之间需要相互通信的次数非常少,并且应用程序在同一台计算机上运行,​​则可以使用非常简单的基于文件的通信,但不建议性能问题。您可以在计算机上的特定路径上定义文件,并定期(例如每秒1次)检查文件是否存在。当第一个应用想要将数据发送到第二个应用时,第一个应用创建该文件并将数据写入其中。第二个应用程序意识到该文件存在,读取其内容并删除该文件。第一个应用程序等待删除文件,然后开始通过执行相同的工作将另一个数据发送到第二个应用程序。同样可以应用于将数据从第二个应用程序发送到第一个应用程序。这种方法只需要使用文件i / o函数!