2011-12-09 72 views
2

我看到還有一些其他帖子與此問題有關。但是,我想問一下,是否有一種新的優雅方式來在C#.net應用程序和C++應用程序之間交換一些消息?.net和C++應用程序之間的內部通信

它們在同一臺機器上運行。

在此先感謝。

+0

,請查看關於使用NamedPipes的這篇文章:http://www.codeproject.com/KB/threads/dotnetnamedpipespart1.aspx – sbeskur

+0

這一個是針對兩個.net應用程序的,對吧?我正在尋找C++應用程序和.net應用程序之間的解決方案 – olidev

+0

命名管道內置於操作系統中,可用於在進程之間進行通信,而不管其使用何種語言。 http://msdn.microsoft.com/en-us/library/windows/desktop/aa365590(v=vs.85).aspx – dkackman

回答

0

有許多機制可以用來做到這一點。

This article列舉了在Windows平臺上完成進程間通信的常用方法。大多數(如果不是全部的話)都可能形成C#和C++(雖然我不希望看到你使用C#中的DDE,儘管it has apparently been done)。

+0

太棒了。非常感謝這篇文章! – olidev

+0

此外,我發現這篇文章很有幫助http://stackoverflow.com/questions/56121/ipc-mechanisms-in-c-sharp-usage-and-best-practices – olidev

3

你想要的是進程間通信(IPC),根據定義它是語言不可知的。

典型的解決方案包括:

  • 命名管道(也稱爲FIFO的)
  • 郵件插槽
  • 文件映射
  • 套接字
  • RPC

根據您的需要使用不同的。

下面是支持的Windows-IPC方法的信息:http://msdn.microsoft.com/en-us/library/windows/desktop/aa365574%28v=vs.85%29.aspx

大多數的這種功能是通過WCF,這當然是針對Windows的暴露在C#。如果你使用單聲道,那麼你的運氣不好。

C++沒有在語言本身中定義任何IPC結構,因此無論如何您都必須使用特定於平臺的庫。

在C#和C++中搜索IPC示例,您將獲得大量命中。

這裏有一個SO張貼,讓你開始:IPC Mechanisms in C# - Usage and Best Practices

1

我一直使用的插座,這是我能想到的(不,雖然最優雅的)假設你希望做的進程間通信的最簡單的方法

相關問題