0

Pythonで作成したサーバーがあり、FlashのXMLSocketを介してサーバーに接続しようとしています。複数の非Flashクライアントアプリケーションで正常に使用したので、このサーバーが正しく機能していることは確かです。今のところ、ローカルディスクにあるSWFを使用してリモートサーバーに接続したいだけです。私が理解していることから、これは、SWFが別のドメインにないため、セキュリティポリシーファイルが必要ないことを意味します。また、ファイルのセキュリティサンドボックスプロパティがlocal-trustedに設定されていることを確認しました。これにより、SWFはサーバーに接続し、サーバーからデータを取得できるようになります。ASファイルの重要なコードは次のとおりです。

var xmlSocket:XMLSocket = new XMLSocket();
public function MainLogic() {
    xmlSocket.addEventListener(DataEvent.DATA, onDataReceived);
    xmlSocket.connect('XXX.XXX.XXX.XXX', XXXX);
}
public function onDataReceived(event:DataEvent):void {
    helloText.text = 'data received'
}

サーバーは、接続が確立されるとすぐに文字列'hello\0'を送信するようにプログラムされています。ただし、これが正常に行われた場合は、動的テキストボックスのデフォルトのテキストを文字列「datareceived」に置き換える必要がありますが、これは発生していません。SWFファイルがローカルであっても、ポリシーファイルが必要になる可能性はありますか?

4

3 に答える 3

1

すべての潜在的なエラー イベントのリスナーを必ず追加してください。これにより、デバッグから多くの当て推量が取り除かれます。livedocs の例を変更してテストすることをお勧めします。彼らはこれらのイベントを設定しました:

xmlSocket.addEventListener(Event.CLOSE, closeHandler);
xmlSocket.addEventListener(Event.CONNECT, connectHandler);
xmlSocket.addEventListener(DataEvent.DATA, dataHandler);
xmlSocket.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
xmlSocket.addEventListener(ProgressEvent.PROGRESS, progressHandler);
xmlSocket.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
于 2010-02-07T13:48:22.883 に答える
0

グレープフルクトの戦略を使用して、どのようなエラーが発生しているかを確認します。

私の推測では、これはセキュリティ エラーです。ソケット経由で接続しようとするときは、常にポリシー ファイル サーバーが必要だと思います。

于 2010-02-07T19:52:29.830 に答える
0

この質問は未登録のアカウントで投稿したため、ベストアンサーやコメントを選択できませんが、基本的にイベント ハンドラーの追加は問題なく機能しました。セキュリティ エラーであることが判明したため、ポリシー ファイルに問題がある可能性があります。ただし、フラッシュ プレーヤーの設定を変更して、特定のフォルダーまたはファイルへのネットワーク アクセスを常に許可するだけの、はるかに簡単な解決策を見つけました。このサイトで設定を変更しました: http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04.html

于 2010-02-07T22:00:13.680 に答える