1

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

「エラー #2031: ソケット エラー。URL: Client_fla::MainTimeline/frame1() の test() で 127.0.0.1」

と私の SecurityError リスナー:

「エラー #2048: セキュリティ サンドボックス違反: file:///C|/Documents%20and%20Settings/Zeph/Bureau/Client.swf は 127.0.0.1:18000 からデータを読み込めません。Client_fla::MainTimeline/ の test() でフレーム1()"

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);
        }

    }

}

私はこれに腹を立てています、誰か考えがありますか?

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

4

2 に答える 2

0

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

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

  2. 出力設定の「ローカル再生セキュリティ」の下で、「ローカル ファイルのみにアクセス」の代わりに「ネットワーク ファイルにアクセス」をチェックして、問題を迅速に解決できる場合があります。

それが役立つことを願っています!

于 2011-03-14T20:24:14.913 に答える
0

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

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

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

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

于 2011-03-15T17:39:29.093 に答える