天天看點

利用WCF的P2P共享剪貼闆上的資料

WCF與P2P   

    WCF是用來實作資料通信的,這篇文章中。我将帶領大家進入WCF的P2P的世界。通過一個執行個體,說明WCF中使用P2P。

利用WCF的P2P共享剪貼闆上的資料

圖一:圍繞中心伺服器打轉

利用WCF的P2P共享剪貼闆上的資料

圖二:P2P分布

執行個體的功能

    我實作的這個例子的功能是:在一個區域網路内,有很多台電腦。當其中一台電腦實作了複制或者剪貼,在其他的電腦上将顯示複制和剪貼的資料。你可以實作Ctrl+C或者Ctrl+X進行資料複制或者剪貼。在其他的電腦上有一個窗體專門顯示你複制或者剪貼的資料(限定了文本資料)。

    實作這個程式有兩個難點:

    1、如何監聽Ctrl+C或者Ctrl+X等事件

    2、不需要特定的服務端(不通過WCF的雙工通信),如果通過P2P去實作資料通信。

執行個體的實作:

    下面根據這兩個難點來展開去實作。

   一、事件監聽:

    1、在WindowsForm應用程式中,protected override void WndProc(ref System.Windows.Forms.Message m)方法可以供我們去重載來實作事件的監聽。判斷Message的編号,如果是複制或者剪貼事件。我們就去通過WCF的P2P服務來廣播剪貼闆中的資訊。代碼如下:

    2、然後送出給User32.dll處理:

    通過上面的代碼,我們解決了第一個問題:如何監聽Ctrl+C或者Ctrl+X等事件。

     二、在WCF中,我們要通過NetPeerTcpBinding實作P2P。

     下面我就一步一步的實作這個P2P的應用服務。

    1、定義契約和實作契約:

在WindowsForm中,通過DisplayClipboardData()方法來調用此服務,代碼如下。

還有就是一個方法來接受資訊方法AddToClip,代碼如下:

由于WCF得回調和WindowsForm的主線程不是一個,故使用了一個委托:

其他詳細見代碼。

執行個體的效果:

    在電腦zhuqilin上複制文本資料

利用WCF的P2P共享剪貼闆上的資料

   在電腦Colin上顯示zhuqilin上複制的資料:

利用WCF的P2P共享剪貼闆上的資料

總結:

      上星期用WCF的雙工實作了一個音頻聊天室的程式。有園友提出點對點的視訊、語音、聊天用P2P去實作效率和性能更好,故研究了一下WCF的P2P。本文就是一個簡單的WCF的P2P的例子。

擴充:

    這篇文章隻實作了文字剪貼闆的共享功能。如果你有興趣,可以進一步擴充。

        擴充1:資料直接傳遞到其他電腦的剪貼闆上,可以直接Ctrl+V粘貼。

        擴充2:現在隻是實作文字剪貼闆的共享。擴充成檔案、視訊、圖檔都可以。

    效果可以是:如果區域網路的兩個端點機器通過共享自己的剪貼闆。在A機器上複制檔案,在B機器上可以直接粘貼。

    寫這個例子的靈感來自RealVNC。用過RealVNC的童鞋都知道,無論區域網路還是外網,隻要兩台pc建立連接配接,就能共享剪貼闆上的資料了。

最後:建立P2P和打開P2P管道需要時間,故在運作這個程式的之後,需要等上一段時間才能共享你的剪貼闆。如果有建議請留言,有幫助請推薦。thx。

本文轉自麒麟部落格園部落格,原文連結:http://www.cnblogs.com/zhuqil/archive/2010/06/20/wcf-p2p-demo.html,如需轉載請自行聯系原作者

繼續閱讀