2011-02-07 10 views
1

単純なアプリケーションでwcf P2P設定を実装しました。P2Pが接続されない場合、クライアントで再起動する方法

私の質問は、これを複数のクライアントでテストした結果です。 10回のうち9回、すべてのクライアントがメッシュ内で同期し、問題なく接続します。

しかし、どのクライアントを閉じてから再度開くかによっては、メッシュに再接続されません。他のクライアントはそれを見ません。

私の質問は、このクライアント上でp2pを閉じてもう一度開いて、再度接続を試みる方法です。私はおそらくそれが接続されていない場合は、それはp2pエンドポイントや何かを閉じて、それを再起動するためにそれを開くだろう問題があると仮定するかもしれない毎分タイマーを設定します。

私はこのクライアントを閉じてから再度開くと、メッシュに再接続するので、これを尋ねます。

私は偽の接続を望みます。そのような場合、クライアントを開いて、クライアントは再起動が必要かどうか、または一定時間が経過しても接続が確立されていないと判断し、接続を「フラッシュ」して再構築しようとします。

これは意味がありますか?

答えて

1

メッシュに接続されていないと判断するのは、単純に単独ではなく不明なフォールト状態があるためです。

ピアチャネルのIOnlineStatusプロパティは、単独でメッシュに入っている(false)か、ピアを接続しているか(true)を知ることができます。あなたはそうのような状態変更イベントのために登録することで、このプロパティを取得することができます:

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

だから私はこれを行うための一つの方法は、あなたのオンライン状態をチェックし、タイマーを持っているだろうし、あなたがのX量を超えて行けばと仮定します時間はオフラインになり、チャンネルを処分して新しいチャンネルを作成します。

+0

これが私がタイマーでやったことです。これは正常に動作するように思われ、これまでの接続を再確立するには100%の成功率があります。 – Nate

関連する問題