当P2P不连接时,如何在客户端“重启”它

问题描述:

我已经在一个简单的应用程序中实现了一个wcf P2P设置。当P2P不连接时,如何在客户端“重启”它

我的问题是测试这与多个客户端的结果。十分之九的时候,所有的客户端都会在网格中同步并且连接没有问题。

但是,根据哪个客户端关闭然后重新打开,它将不会重新连接到网格。其他客户没有看到它。

我的问题是如何关闭并重新打开此客户端上的P2P,以便它可以尝试再次连接?我会设置一个计时器,或许每隔一分钟左右,如果它没有连接,它可能会认为有问题,所以它会关闭它的P2P端点或任何其他,然后重新打开它来刷新整个事情。

我问这个,因为如果我关闭这个客户端,然后重新打开它,它会重新连接到网格。

我想要傻瓜连接。例如,你打开一个客户端,客户端会判断它是否必须重新启动,或者它在一段时间后没有获得连接,所以它会尝试“刷新”连接并重建它。

这是否有意义?

由于某些未知的故障情况而不是简单地单独确定,因此很难确定您没有连接到网格。

对等通道上的IOnlineStatus属性可以告诉您,如果您单独处于网格状态(false),还是已连接对等体(true)。您可以通过状态更改事件,像这样注册得到这个属性:

IOnlineStatus status = myPeerChannel.GetProperty<IOnlineStatus>(); 
status.Online += new EventHandler(MyOnlineEventHandler); 
status.Offline += new EventHandler(MyOfflineEventHandler); 

所以我想这样做将有一个检查您的在线状态和定时器的一种方式,如果你去比X金额在离线时,处理您的频道并创建一个新频道。

+0

这就是我最终做的计时器。它似乎正常工作,到目前为止,重新建立连接的成功率为100%。 – Nate 2011-02-08 16:07:49