2011-08-11 5 views
1

フレックス.swfと、ソケットを介してお互いに通信しようとしている別個のAIRプロジェクトがあります。フレックス/ AIRソケット通信 - フレックスでデータを受け取ることはありません

2つのプログラムが正常に接続していて、.swfが問題なくAIRアプリケーションにデータを送信できます。しかし、私は、AIRアプリケーションがFlexにデータを送り返すときに、それが受信されないことを発見しています。

  • .swfは、ブラウザでfile:// URIを使用してローカルに起動されます。
  • .swfファイルは接続し、CONNECTイベントがhereを示唆したよう
  • 私が追加したブレークポイントは、ポリシーファイルのリクエストを探して解雇されたが、私が今までに発行されますポリシーファイルの要求が表示されませんSWFをAIRアプリケーションに追加します。

は、ここで私はデータをリッスンするSWFから実行しているコードの抜粋です:

private var address:String; 
    private var port:int; 
    private var socket:Socket; 
    private var log:ILogger = LogUtil.getLogger(this); 

    public function SocketPlayer(port:int=41051,address:String="127.0.0.1") 
    { 
     this.port = port; 
     this.address = address; 
     connect(); 
    } 
    public function connect():void 
    { 
     socket = new Socket(); 
     socket.addEventListener(DataEvent.DATA,onData); 
     socket.addEventListener(Event.CLOSE,logEvent); 
     socket.addEventListener(Event.CONNECT,logEvent); 
     socket.addEventListener(SecurityErrorEvent.SECURITY_ERROR,logEvent); 
     socket.addEventListener(IOErrorEvent.IO_ERROR,logEvent); 
     socket.connect(address,port); 
     log.info("Socket connected on {0}:{1}",address,port); 
    } 
    private function logEvent(event:Event):void 
    { 
     log.info("Event: {0}", ObjectUtil.toString(event)); 
     if (event is TextEvent) 
     { 
      log.error(TextEvent(event).text) 
     } 
    } 
    private function onData(event:DataEvent):void 
    { 
     log.info("Data: " + event.data); 
    } 

は、ここでデータを送信するためにAIRアプリケーションで使用されるコードです:

public function execute():void 
    { 
     var message:String = "Testing..."; 
     socket.writeUTF(message); 
     socket.flush(); 
    } 

socketServerSocketConnectEventに渡されたとしてローカルに格納されますが、このコードはここには表示されません)

Error #2048: Security sandbox violation: file:///Users/martypitt/dev//ParsleyTest/bin-debug/RecordingTest.swf cannot load data from 127.0.0.1:41051. 

しかし、SecurityErrorEvent:SWF内送信しているコードにブレークポイントを置いて、私は、ソケットは、次のエラーテキストとflash.events.SecurityErrorEventのインスタンスに設定されているプラ​​イベート_timeoutEvent性質を持っていることに気づきます私のコードで決して捕まえられない(これが実際に派遣されたことがわかっているかどうかはわかりません)。

この通信を可能にするために追加の手順が必要ですか?

+0

Tsk tsk Marty、私はオフィスで最初に私に尋ねるのではなく、オンラインで質問しますか?私は怒っている:P –

+0

@J_A_X - 小さな世界! :) ...それはあなたがあいまいなオンラインのハンドルを使用するために得るものです。 –

答えて

1

おっと - ここでの問題は、私が間違っているイベントのために聞いているということです。..

これはSocket、ないXMLSocketであるように私は、ProgressEvent.SOCKET_DATA代わりのDataEvent.ON_DATAをリッスンする必要があります。

関連する問題