2012-03-11 12 views
2

as3でSocketオブジェクトとServerSocketオブジェクトを作成した後、connectメソッドを使用してホストとポートを渡してソケットを接続しました。また、ServerSocketオブジェクトは、作成したばかりのソケット以外のソケットから着信接続を受信するようにしました。 ServerSocketが接続を検出してデータの受信を開始すると、ソケットオブジェクトは自動的に切断されます。だから、ソケットオブジェクトに接続を生かし続ける方法を知りたがっています。AS3でソケットが自動的に切断される

+2

私にはセキュリティ上の問題のようです...あなたのサーバーにはクロスドメインポリシーがありますか? – weltraumpirat

+0

私は@weltraumpiratがここのお金の上にいると信じています。おそらくセキュリティ上の問題です。接続しているソケットが、ソケットセキュリティポリシーファイルを要求したときに、そのソケットセキュリティポリシーファイルを要求していることを確認する必要があります。私はあなたのためにこれを解決する答えにリンクします。 –

答えて

3

私はこの問題を重複として参照するのではなく、単に問題と同じではないため、これを投稿しています。答え私はここで参照するつもりです。私はしかし、私はここでの問題であると考えていますが、ソケットを接続後ろセキュリティモデルを理解するのに役立ちますリソースを、提供するためにリンクしています答え:

air 2.6 serversocket and actionscript 3 socket connection

「握手を示してリンクされたリソースからの抜粋ポリシーファイルは接続ソケットに渡され、ここで、「:

private function handshakeHandler(event:ProgressEvent):void 
{ 
    var socket:Socket = event.target as Socket; 

    //Read the message from the socket 
    var message:String = socket.readUTFBytes(socket.bytesAvailable); 
    logCallback("Received: " + message); 
    if(message == "") 
    { 
     var policy:String = '\x00'; 
     socket.writeUTFBytes(policy); 
     socket.flush(); 
     socket.close(); 
     logCallback("Sending policy: " + policy); 
    } else if (message == "BEGIN") 
    { 
     socket.removeEventListener(ProgressEvent.SOCKET_DATA, handshakeHandler); 
     socket.addEventListener(ProgressEvent.SOCKET_DATA, socketDataHandler); 
     socket.writeUTFBytes("READY"); 
     socket.flush(); 
    } 
} 

この例で使用されるポリシーファイルは次のとおり

<cross-domain-policy> 
    <allow-access-from domain="*" to-ports="8087" /> 
    </cross-domain-policy>\x00 
関連する問題