質問

接続タイムアウト後に TCP リスナーに (Socket および XMLSocket クラス経由で) 接続するときに問題が発生します。

サーバーへの TCP 接続を維持する必要がある Flash アプレットがあります。タイマーやピンポンシステムなどを使用してタイムアウトを実装しました。ただし、問題があります。Socket.connect() を呼び出すと、Flash プレーヤー (9.0.115 およびそれ以前の他の多くの安定版) は、SYN パケットを介して、ある程度の時間を置いて 3 つの接続リクエストを送信します。これらのいずれにも返信されない場合 (例:サーバーがダウンしているため)、アプレットをサーバーに接続 [試行] できません。これまで。つまり、アプレットの存続期間内です。

明確化および/または要約するには:

Socket.connect() または XMLSocket.connect() に指定されたホスト/ポートのペアについて、呼び出しが失敗した場合、後続の connect() 呼び出しは他の Socket (または XMLSocket) インスタンスに対して行われます。 Flash アプレットの存続期間内 同じホスト/ポートのペアへの送信は無視されます。(少なくともパケットスニファーを使用して知る限りでは。)

私は多数の Socket メソッドを呼び出したり、オブジェクトを破棄して再作成したり、Socket のプールを使用したり、その他さまざまなメソッドを試してみましたが、今は思い出せません。すべて無駄です。

私の現在の解決策は、JavaScript 呼び出しを通じて親 Web ページに通知し、アプレットをリロードさせることです。これはあまり良い解決策ではないので、問題の回避策を実装するつもりはありません それ Flash がソケット接続を適切に処理できないことが原因です。

非常に単純な何かが欠けているに違いありません。

何か案は?

1:実際にオブジェクトを破壊できないことはわかっています。私はそれらへの参照をすべて削除し、最善を祈ります。この場合、GC を明示的に呼び出すことは試していません。(ただし、ソケットを配列内に配置して使用しようとしたと思います) 消去.)


はい、接続が成功すれば期待どおりに動作します (後で接続が切断された場合でも)。

これを引き起こす唯一のイベントは、サーバーがまったく応答しない場合です。これはあたかも Flash がホストとポートの組み合わせを「オフライン」としてマークし、アプレットの存続期間中はそれ以上のパケットを送信しなくても済むようなものです。

接続が積極的に拒否されているのではないかと思われます (例:ホストはオンラインですがポートをリッスンしていません)が原因ではありません。

ソケットからエラー メッセージやその他の種類のフィードバックが表示されません。

同じホスト/ポートのペアに対して connect() を複数回呼び出したときに、最初の呼び出しが失敗したことはありますか?最初の connect() が失敗したことはどのようにしてわかりましたか?そして、後続の connect() 呼び出しの前に、ソケットをリセットするために何か行いましたか?

役に立ちましたか?

解決

これは未解決のバグに関連している可能性があります FP-269 これは、根本的な原因が次の場合と同じである可能性があります。 FP-67.

このビルドは、現在のパブリックベータリリースで修正する必要があります labs.adobe.com

エドウィン・ウォン - [08/09/23 04:49 PM ]

を与えることをお勧めします 最新のパブリックベータ版 一発...

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top