利用Vista和WCF中强大P2P通信功能
2008-05-27 17:19:12 来源:WEB开发网PNRP 和 IPv6 PNRP 构建于 Internet 协议版本 6 (IPv6) 之上。由于 IPv6 对于多数开发人员而言还相当陌生,因此在讨论 PNRP 机制之前,非常有必要提及 IPv6 的至少一个重要方面。在 IPv6 中,地址是一个 128 位的值(这可能产生约 3.4×1038 种地址组合)。这种大小的 IPv6 地址池使 IPv6 的最重要功能之一 - 端对端寻址变为可能,即使这些地址被分割为多个子网并隐藏在 NAT 之后。
PNRP 示例 PNRP 功能的原型、结构、错误代码均在 Windows SDK 的 p2p.h 头文件中定义。如果某应用程序想要向 PNRP 注册一个网格名,它必须用非托管代码通过 Windows API 实现,或用托管代码通过公共语言运行库 (CLR) 的 P/Invoke 工具实现。目前,在 Windows API 的 PNRP 部分的 .NET Framework 中未包含托管包装。但您可以通过使用 netsh 命令行实用程序来访问 PRNP。通过 netsh,您可以按以下所示向 PNRP 注册一个新的 PNRP 名:
c: emp>netsh
netsh>p2ppnrppeer
netshp2ppnrppeer>add0.justinsmith
Ok.
命令行参数 0.justinsmith 即是 P2P 名。当此命令执行时,PNRP 基础结构会生成一个 PNRP ID,将该 PNRP ID 与 P2P 名相关联,并为该 PNRP ID 分配一个 IPv6 和 IPv4 地址。如果您访问另一台已安装 PNRP 并已将其启动的计算机,则可以用以下 netsh 命令解析网格名 0.justinsmith:
netshp2ppnrppeer>resolve0.justinsmith
Resolvestarted...
Found:Comment:gonzo
Addresses:[0000:0000:0000:0000:0000:0000:0000:0001]:8350udp
192.168.42.100:8350tcp
现在需要解释一下该解析命令的输出。首先,Comment 字段代表注册了 0.justinsmith 的计算机名称(我在 Muppets 的基础上为我的计算机命名)。该字段从 netsh 自动填充,并且不能用作解析进程的一部分。其次,注意一下分配给该节点的 IPv6 和 IPv4 地址。这是 netsh 和允许通过 IPv4 网络传送 IPv6 通信量的 Teredo 转移技术共同具备的一个功能。诚然,我只是浅显地阐述了 PNRP,但我已经表明了 PNRP 使我可以用 P2P 名来解析 IP 地址。
更多精彩
赞助商链接