質問

AS3 の XMLSocket スクリプトで問題が発生しています。Java サーバーがあり、XML データを送信しようとしていますが、サーバーは何も受信しません。最も驚くべきことは、私のスクリプトは 1 か月前には非常にうまく機能していましたが、今では IOError リスナーが次のように返してくれることです。

「エラー #2031:ソケットエラー。URL:127.0.0.1 at test()at client_fla :: maintimeline/frame1() "

そして私の SecurityError リスナー:

「エラー #2048:セキュリティ サンドボックス違反:file:///C|/Documents%20and%20Settings/Zeph/Bureau/Client.swf は 127.0.0.1:18000 からデータをロードできません。aT test()at Client_fla :: maintimeline/frame1() "

IP を変更しようとしたり、別のコンピューターで試してみたり、変更されていない以前のバージョンのスクリプトをプルしようとしたりしましたが、結果は得られませんでした。

なぜこのように機能しなくなったのか理解できません。これが私のスクリプトです:

package
{

    import flash.net.XMLSocket;
    import flash.events.*;
    import flash.display.MovieClip;

    public class test extends MovieClip 
    {

        public function test()
        {
            trace("pouet");
            var xmlsock:XMLSocket = new XMLSocket(); 
            xmlsock.connect("127.0.0.1", 18000);
            var xmlFormattedData = new XML('<message pseudo="Nix" value="Coucou !"/>'); 
            xmlsock.send(xmlFormattedData);
            xmlsock.addEventListener(DataEvent.DATA, onData);
            xmlsock.addEventListener(IOErrorEvent.IO_ERROR, ioerror);
            xmlsock.addEventListener(SecurityErrorEvent.SECURITY_ERROR, secuerror);
            xmlsock.send(xmlFormattedData);

        }

        private function onData(event:DataEvent):void 
        { 
            trace("[" + event.type + "] " + event.data); 
        }


        private function ioerror(event:IOErrorEvent):void 
        { 
        trace(event);
        }

        private function secuerror(event:SecurityErrorEvent):void 
        { 
        trace(event);
        }

    }

}

これには腹が立っているのですが、誰かアイデアはありますか?

読んでくれてありがとう!

役に立ちましたか?

解決

このエラーは、ローカル ファイル システムからフラッシュ アプリケーションを実行しており、このアプリケーションが (Java サーバーに対して) ネットワーク リクエストを作成しようとしていることを示しています。

これはデフォルトでは許可されていません。次の 2 つのうちの 1 つを行うことができます。

  • Flash プレーヤーでグローバル セキュリティ設定を更新します (右クリックして詳細設定、グローバル セキュリティ設定を選択し、フラッシュ ファイルまたはフォルダー全体をネットワーク リクエストの実行を許可するように設定します)。

  • Web サーバーから Flash アプリケーションを実行します (そして、crossdomain.xml が Java サーバー上に存在することを確認してください)。

他のヒント

エラーが示しているように、サンドボックスのセキュリティ違反が発生しています。これは、Flash が独自のアプリケーション ドメイン以外のアセットを許可しないことを意味します。基本的に 2 つの修正があり、1 つはもう 1 つよりもはるかに簡単です。

  1. 作成とロードの方法を読む クロスドメイン XML. 。これは、実行中のフラッシュ アプリケーションが読み取るサーバー上の単なる「ポリシー」です。正しく設定するのは難しい場合がありますが、これが一般的に受け入れられているルートです。

  2. 出力設定の「ローカル再生セキュリティ」で、「ローカル ファイルのみにアクセスする」ではなく「ネットワーク ファイルにアクセスする」にチェックを入れると、問題をすぐに解決できる場合があります。

お役に立てば幸いです!

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