私はかなり大きな問題に遭遇し、運が悪かったので2か月間解決策を見つけようとしていました。私はそれをバグとして提出しましたが(https://bugzilla.xamarin.com/show_bug.cgi?id=4910)、ここの誰かが問題の原因に光を当てたり、作業を提案したりできることを望んでいました-その周り。
一言で言えば、エラーに遭遇するには:
- 2つのデバイス間に基本的な.Netソケット接続を作成します
- 少なくとも1つのデバイスでGameKit.GKSessionオブジェクトを作成して初期化します。
発生するのは、.NETソケットでのデータの転送が不安定になり、速度が遅くなって使用できなくなることです。私はさまざまなデバイスで多くのテストを実行しましたが(以下のリンクを参照)、すべてのデバイスに影響します(iPad 3の影響は最も少ないです)。iPhoneとWindowsPCの間でテストしましたが、まだ発生しています。MonoTouchのGameKitコードは、Socketコードに何らかの影響を及ぼしています。スプレッドシートからわかるように、速度が数ミリ秒から低下し、1MBから数分から永久に送信されます。GameKit.GKSessionがnullに設定されるとすぐに、ソケット上のバックログされたデータは再び自由に流れ、ソケットはもう一度正常に動作します。
問題を示すサンプルのWindowsおよびiOS/MonoTouchアプリ:https ://dl.dropbox.com/u/8617393/SocketBug/SocketBug.zip
さまざまなデバイス間でのテスト結果(PDFスプレッドシート): https ://dl.dropbox.com/u/8617393/SocketBug/SocketBugTestResults.pdf