客户端/服务器事件处理:UdpClient的替代方案

本文关键字:方案 UdpClient 服务器 事件处理 客户端 | 更新日期: 2023-09-27 18:06:53

我的Winforms客户端/服务器应用程序依赖于UDP多播实时更新所有客户端。服务器将事件发送到已知的UDP接收器中,每个客户端都使用system.net.socket.udpclient类的实例接收它们。

当它工作时,它工作得很好。每个客户端都有一个远程对象,通过TCP对其进行同步调用,UDP处理异步内容,因此客户端保持无状态。但是我们的许多客户端都以各种方式禁用了UDP——有些禁用了多播,有些完全禁用了UDP,有些是故意禁用的,还有一些是偶然禁用的。我最终做了比我想要的多得多的网络管理工作。

在我看来,另一种选择是让服务器管理客户端连接并通过TCP发送事件,但这需要一个有状态的服务器,并且看起来不太有吸引力。有没有更好的选择?

客户端/服务器事件处理:UdpClient的替代方案

您可以尝试使用WCF和发布/订阅设计模式。我移动了一个winforms TCP/UDP应用程序,就像你描述的WCF使用netcp绑定和UDP广播为客户端找到服务器,一旦他们找到它,他们订阅,你使用WCF回调合约来更新客户端。如果连接断开,你需要在双方都有情报。

同样在你的情况下,如果服务器总是一个集地址与WCF回调你不需要使用UDP找到服务器,所以你可以消除UDP,只是依靠netttcpbinding推送消息到客户端,反之亦然。