WEB开发网
开发学院操作系统Windows Vista 利用Vista和WCF中强大P2P通信功能 阅读

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

 2008-05-27 17:19:12 来源:WEB开发网   
核心提示: 实施服务合同[ServiceBehavior(InstanceContextMode=InstanceContextMode.Single)]publicpartialclassfrmPictureViewer:Form,IPictureViewer{//托管接收者ServiceHosth

实施服务合同

   [ServiceBehavior(InstanceContextMode=InstanceContextMode.Single)]
  publicpartialclassfrmPictureViewer:Form,IPictureViewer
  {
  //托管接收者
  ServiceHosthost;
  //接收消息时将要调用的方法
  publicvoidSharePicture(Streamstream)
  {
  //获取图像
  Imageimage=Bitmap.FromStream(stream);
  //在窗体的图片框中显示图像
  pbView.SizeMode=PictureBoxSizeMode.StretchImage;
  pbView.Image=image;
  }
  ...//为清晰起见省略其他成员
  }

接下来,我必须对 ServiceHost 进行实例化,添加端点并开始侦听外来的消息。由于我正在构建 Windows 窗体应用程序,因此实现此操作的逻辑位置就是窗体的构造函数,如下所示。

尝试加入网格和侦听消息

   publicfrmPictureViewer()
  {
  InitializeComponent();
  StartReceiving();
  }
  privatevoidStartReceiving()
  {
  //定义网格名并设置与PNRP解析器的
  //对等绑定
  UrimeshAddress=newUri("net.p2p://pictureView");
  NetPeerTcpBindingbinding=newNetPeerTcpBinding();
  binding.Resolver.Mode=PeerResolverMode.Pnrp;
  binding.Security.Transport.CredentialType=
  PeerTransportCredentialType.Password;
  binding.MaxReceivedMessageSize=700000L;
  host=newServiceHost(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) 以及所增添的基于密码的安全性。请注意,我已选择将网格密码直接置于代码中,这一点很重要。如果想要使网格密码保密,请不要在您当前所使用的应用程序中如此操作。

上一页  5 6 7 8 9 10 

Tags:利用 Vista WCF

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接