1

ActionScript で記述された Flash クライアント アプリケーションがあります。このアプリケーションは、XMLSocket クラスを使用してポート 5750 で TCP/IP 経由でサーバー デバイスと通信します。したがって、たとえば、ブラウザで Flash クライアントを実行し、サーバーに接続することができます。インターネット上にあります。

Android の最近のバージョンでは Flash がサポートされているため、Android デバイスに Flash クライアントをインストールすると、これが機能することが期待できます。ただし、接続の試行はハングするだけです。現在、クライアント側には診断はありません。実行中の Flash アプリケーションだけです。したがって、ログや標準エラー メッセージはありません。

サーバー デバイスは基本的にブラック ボックスですが、サーバーがクライアントからの要求を取得しないことは明らかです。これは、クライアントがソケットを開くことができなかったことを示しています。

基本的な Web 検索では、この状況についてあまり知られていないことがわかります。ここで何がうまくいかないのかについて何か考えはありますか?

たとえば、XMLSocket は Android では動かないのでしょうか? または、Android がポート 5750 をブロックしますか? または、Flash Player には何らかのサンドボックスまたはファイアウォールの制限が組み込まれていますか?

Android 2.2 ~ 2.3 および Android Flash Player 10 ~ 11 を実行するいくつかの異なる Android デバイスを試しました。クライアントは ActionScript 2 で記述されています。

4

1 に答える 1

2

これはおそらくセキュリティ設定の問題です。

Androidデバイスで実行されているFlashクライアントがサーバーと同じドメインにないと思います。アドビのAS2リファレンスはそれをすべて伝えています:

XMLSocket.connect()メソッドは、SWFファイルが存在する同じドメイン内のコンピューターにのみ接続できます。この制限は、ローカルディスクで実行されているSWFファイルには適用されません。(この制限は、loadVariables()、XML.sendAndLoad()、およびXML.load()のセキュリティルールと同じです。)SWFが存在するドメイン以外のドメインで実行されているサーバーデーモンに接続するには、次のように作成します。特定のドメインからのアクセスを許可するサーバー上のセキュリティポリシーファイル

XMLSocketオブジェクトと通信するようにサーバーを設定するのは難しい場合があります。アプリケーションがリアルタイムの対話性を必要としない場合は、XMLSocketの代わりに、loadVariables()関数、またはFlash HTTPベースのXMLサーバー接続(XML.load()、XML.sendAndLoad()、XML.send())を使用します。クラス。XMLSocketクラスのメソッドを使用するには、最初にコンストラクターであるnew XMLSocketを使用して、XMLSocketオブジェクトを作成する必要があります。

あなたの質問に関連する他の問題がいくつかあります。一見の価値があります。

XMLSocketはFirefoxで動作しますが、IEでは動作しません

FlashクライアントXMLSocketがサーバーに接続していません

于 2012-03-08T22:30:28.290 に答える