我在一个简单的应用程序中实现了一个wcf P2P设置。
我的问题是多个客户端对此进行测试的结果。十分之九,所有客户端将在网格中同步并连接而没有问题。
但是,根据我关闭然后重新打开的客户端,它将不会重新连接到网格。其他客户看不到它。
我的问题是我怎样才能关闭并重新打开此客户端上的p2p,以便它可以再次尝试连接?我可能会设置一个计时器,如果它没有连接,每分钟左右,可能会有一个问题,所以它会关闭它的p2p端点或其他什么,然后重新打开它来刷新整个事情。
我问这个,因为如果我关闭这个客户端,然后重新打开它,它将重新连接到网格。
我想要万无一失的连接。例如,您打开一个客户端,客户端将确定它是否必须重新启动或在一段时间后没有获得连接,因此它会尝试“刷新”连接并重建它。
这有意义吗?
答案 0 :(得分:1)
由于某些未知的故障情况而不是仅仅是单独的故障,很难确定你没有连接到网状网。
对等通道上的IOnlineStatus属性可以告诉您是否单独处于网格中(false),或者是否已连接对等(true)。您可以通过注册状态更改事件来获取此属性,如下所示:
IOnlineStatus status = myPeerChannel.GetProperty<IOnlineStatus>();
status.Online += new EventHandler(MyOnlineEventHandler);
status.Offline += new EventHandler(MyOfflineEventHandler);
因此,我认为一种方法是使用计时器检查您的在线状态,如果您的离线时间超过X,请丢弃您的频道并创建一个新频道。