2011-08-25 95 views
0

我的Winforms客戶端/服務器應用程序依靠UDP多播來實時更新所有客戶端。服務器將事件觸發到已知的UDP接收器中,並且每個客戶端都使用System.Net.Sockets.UdpClient類的實例接收它們。客戶端/服務器事件處理:UdpClient的替代品?

這很好 - 當它工作。每個客戶端都有一個遠程對象,通過TCP進行同步調用,UDP處理異步事件,因此客戶端保持無狀態。但是,我們的許多客戶端都以各種方式禁用了UDP - 一些禁用了多播,一些禁用了UDP,一些禁用了其他目的,另一些則意外禁用了UDP。我最終做了比我想要的更多的網絡管理。

另一種選擇,在我看來,服務器管理客戶端連接並通過TCP發送事件,但這需要一個有狀態的服務器,並且看起來並不很有吸引力。有沒有優越的選擇?

回答

0

您可以嘗試使用WCF和發佈/訂閱設計模式。我使用netTCP綁定和UDP廣播爲客戶端移動了一個Winforms TCP/UDP應用程序,就像您向WCF描述的一樣,一旦找到服務器,它們就會訂閱並使用WCF回調協議來更新客戶端。如果連接斷開,您需要雙方都有智慧。

同樣在你的情況下,如果服務器總是帶有WCF回調的設置地址,你不需要使用UDP來查找服務器,所以你可以消除UDP並且只依靠netTCPBinding來將消息推送到客戶端,反之亦然。

相關問題