2

Silverlight 3で非同期ソケットパターンを使用してタスクを実装しました。MichaelSchwarzの実装から始めて、その上に構築しました。つまり、基本的に、私のSilverlightアプリはデバイスへの永続的なソケット接続を確立し、データは必要に応じてデバイスとSilverlightアプリの間で双方向に流れます。

私が苦労していることの1つは、切断を検出する方法です。私は2つのアプローチを考えることができます:

  1. 生き続ける。これはSocketsレベルで実行できることは知っていますが、非同期モデルでこれを実行する方法がわかりません。Socketクラスは、切断が発生したことをどのように通知しますか。

  2. 手動で生き続ける。基本的に、Silverlightアプリに20秒程度ごとにダミーパケットを送信させています。それが失敗した場合、私は切断を想定します。ただし、信じられないことに、Silverlightアプリが接続されているデバイスのプラグを抜いただけでも、SocketAsyncEventArgs.SocketErrorは常に成功を報告します。これがバグなのか、それともSL4にアップグレードする必要があるのか​​わかりません。

任意のアイデア、方向性または実装をいただければ幸いです。

4

1 に答える 1

0

結局、ターゲットからの応答を必要とするハートビートパケットを使用することになりました。基本的に、事前定義されたダミーパケットを送信し、ターゲットデバイスは同じもので応答する必要があります。そうでない場合、接続は無効と見なされます。

于 2010-07-04T04:41:21.280 に答える