【问题标题】:How to exchange data between two process? [duplicate]如何在两个进程之间交换数据? [复制]
【发布时间】:2012-11-18 13:14:12
【问题描述】:

可能重复:
IPC Mechanisms in C# - Usage and Best Practices

我有两个不同的进程:AB

进程A 想要向进程B 发送一些数据(字节数组、字符串、结构等...)。所以假设A需要发送如下缓冲区:

var buffer = new byte[100].
SendToAnotherProcess(B, buffer);

B需要接收这个缓冲区:

byte[] buffer;
ReceiveFromAnotherProcess(A, out buffer);

最简单的解决方案是什么?

【问题讨论】:

  • 谷歌“windows 进程间通信”。

标签: c# process .net-3.5 inter-process-communicat


【解决方案1】:

有多种选择。举几个低级 IPC 机制:

  • 命名管道
  • 共享内存
  • TCP/IP 套接字

此外,还有一些更高级别的选项:

  • .NET 远程处理
  • WCF

【讨论】:

    【解决方案2】:

    .net 中有一些特殊的工具:

    .Net Remoting

    WCF

    【讨论】:

      【解决方案3】:

      一种常见的方式是使用文件在处理之间进行通信。

      每个人都可以写入另一个可以读取的特定文件。

      您可以使用 WCF、注册表、网络接口、消息队列或任何其他存在于进程之外的机制。

      【讨论】:

      • 注册表作为 IPC 机制。这太可怕了。
      • @DavidHeffernan - 以前见过...
      • 啊,现在你提到了 WCF。这有点像。
      【解决方案4】:

      您可以使用Named Pipe。如果是C# 4.0及以上,也可以使用Memory mapped file

      【讨论】:

      • +1 用于命名管道。如果实施不当,使用内存映射文件可能会很麻烦。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-24
      • 1970-01-01
      • 2021-11-05
      • 2013-07-08
      • 1970-01-01
      • 2022-01-03
      相关资源
      最近更新 更多