2010-09-24 54 views

回答

4

沒有記錄的方式做到這一點。一些測試後,我來到了以下結論:

如果你有一個WCF服務器和Win32的C++客戶端,最後一個看到的第一個地址,如以下格式的UUID:

12345678- 1234-1234-1234-123456789abc

而且這個UUID似乎是隨機的,因爲每次啓動服務器時它都會爲相同的WCF地址更改。

我不知道是否從WCF客戶端可以看到帶有GUID格式地址的Win32 C++命名管道服務器,但是我確信如果是這樣,服務器將不得不實施記錄不當的協議由WCF。

對這樣的協議的文檔被提供作爲一個答案my previous question on this subject.

EDIT進一步的研究顯示,該管地址被存儲在文件映射。該入口地址依次是NetNamedPipe地址標準化版本的base64編碼散列。

+0

+1 - 不錯的信息,thx – 2010-09-27 13:14:17

2

根據this from Stephen Cleary,不可能鏈接本機和WCF管道。考慮到WCF和Win32的不相交管道命名空間的上下文,這是有道理的。

以「Net」開頭的所有WCF綁定都是 .NET特定的。他們使用某種協議 (這是未記錄的AFAIK),可能在未來發生變化。

如果您只需要知道管道名稱,您可以使用pipelist from Sysinternals來解決這個問題(通過消除?)。我想在WCF的封面下潛伏着一個原生的命名管道...

+0

我不願意相信你的答案的第一部分,但是在我測試pipelist之後,如你所建議的那樣,我將能夠證實這一點。 – 2010-09-25 19:03:23

+0

@Jader - 讓我知道,我會編輯,或者你可以。謝謝,祝你好運。 – 2010-09-25 19:50:45

+0

我發佈了結果作爲答案 – 2010-09-27 12:12:22

0

查看here瞭解一些細節,我發現這一點,同時嘗試做類似的事情。你不能控制管道的WCF末端(當然,不是沒有拋棄netNamedPipeBinding並創建你自己的命名管道傳輸),但是你可以從本地代碼中找到並打開WCF管道,重新準備工作。