2010-09-24 61 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管道,重新准备工作。