CTOCIO IT专家网

天极传媒 比特网 | 天极网 | IT专家网 | IT商网 | 52PK游戏网 | 手机天极 | IT分众 |
IT专家网搜索

您现在的位置: IT专家网 > WinSystem子站 > 技巧

利用Vista和WCF中强大P2P通信功能

作者: Justin Smith,  出处:微软, 责任编辑: 韩博颖, 
2008-05-23 11:02
  Windows Vista 中的 P2P 开发是一个极其广泛的主题。因此,我不会去尝试完成这样一个不可能的任务,而是会介绍 Windows Vista 中一些不同的 P2P 技术。

  在定义了我们的服务合约后,现在就该添加 Windows Communication Foundation 代码,该代码会将我们的应用程序连接到 PeerChannel 网格并且被动等待来自网格的消息。首先,在窗体中实现新定义的服务合约。然后,定义类型 ServiceHost 的字段。所接收的消息将被发送到 frmPictureViewer 类型的单个实例。要表明此功能,我必须将正确的 ServiceBehavior 分配给 frmPictureViewer 类型。这两个步骤如下所示。

  实施服务合同

  

      [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
  public partial class frmPictureViewer : Form, IPictureViewer
  {
  // 托管接收者
  ServiceHost host;
  // 接收消息时将要调用的方法
  public void SharePicture(Stream stream)
  {
  // 获取图像
  Image image = Bitmap.FromStream(stream);
  // 在窗体的图片框中显示图像
  pbView.SizeMode = PictureBoxSizeMode.StretchImage;
  pbView.Image = image;
  }
  ... // 为清晰起见省略其他成员
  }
  接下来,我必须对 ServiceHost 进行实例化,添加端点并开始侦听外来的消息。由于我正在构建 Windows 窗体应用程序,因此实现此操作的逻辑位置就是窗体的构造函数,如下所示。

  尝试加入网格和侦听消息

  

      public frmPictureViewer()
  {
  InitializeComponent();
  StartReceiving();
  }
  private void StartReceiving()
  {
  // 定义网格名并设置与 PNRP 解析器的
  // 对等绑定
  Uri meshAddress = new Uri("net.p2p://pictureView");
  NetPeerTcpBinding binding = new NetPeerTcpBinding();
  binding.Resolver.Mode = PeerResolverMode.Pnrp;
  binding.Security.Transport.CredentialType =
  PeerTransportCredentialType.Password;
  binding.MaxReceivedMessageSize = 700000L;
  host = new ServiceHost(this);
  host.AddServiceEndpoint(typeof(IPictureViewer), binding,
  meshAddress);
  // 定义密码并获取数字签名证书
  host.Credentials.Peer.MeshPassword = "JustinSmith";
  host.Credentials.Peer.Certificate = GetCertificate();
  // 尝试联结和侦听消息
  host.Open();
  }
  此时,我已经完成了要连接到网格并侦听消息所需的所有步骤。与标准的 Windows Communication Foundation 代码相比,不同之处只在于 Uri 的方案 (net.p2p)、所使用的绑定 (NetPeerTcpBinding) 以及所增添的基于密码的安全性。请注意,我已选择将网格密码直接置于代码中,这一点很重要。如果想要使网格密码保密,请不要在您当前所使用的应用程序中如此操作。
?8?? 9 1 2 3 4 5 6 7 8 :

网友评论

笔名 
请您注意:遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。    IT专家网友拥有管理笔名和留言的一切权利。
  • 周排行榜
  • 月排行榜

邮件订阅

天极服务 | 关于我们 | 网站律师 | 加入我们 | 联系我们 | 广告业务 | 友情链接 | 我要挑错
All Rights Reserved, Copyright 2004-2008, Ctocio.com.cn
渝ICP证B2-20030003号 如有意见请与我们联系 powered by 天极内容管理平台CMS4i