2

サーバーに接続したい Flash クライアントがあります。どちらも localhost とポート 50000 を使用しているため、クロスドメインの問題は発生しません。また、公開設定で Access Network Only を設定しました。XMLSocket 接続を呼び出すと、サーバーは新しい接続を取得するようです。ただし、XMLSocket.onConnect コールバックは、success=true では呼び出されません。

何が間違っている可能性がありますか?

ソケットを作成するための ActionScript は次のとおりです。

 function myOnConnect(success) {
    if (success) {
        trace ("Connection succeeded!")
        inputText.text = "open";
//      socket.send("1\n");
        gotoAndPlay(2);
    } else {
        trace ("Connection failed!")
        inputText.text = "failed";
    }
}


btnConnect.onRelease = function()
{
    inputText.text = "started";


    result = socket.connect("localhost", 50000);


}

socket = new XMLSocket();
socket.onConnect = myOnConnect;
4

1 に答える 1

4

これは最終的にセキュリティの問題になりました。Flash Player では、XMLSocket を使用する場合のセキュリティが強化されています。Flash Player は、ポート 843 でポリシー ファイルを検索するようになりました。別の方法として、swf で呼び出しを使用してポリシー ファイルを検索することもできますSecurity.loadPolicyFile()。ファイルが存在し、すべてのセキュリティ設定で XMLSocket が許可されている場合、接続が作成されます。

ポリシー ファイルに関する Adob​​eの記事と詳細情報は、こちらをご覧ください。これは、ポリシー ファイルに関するもう 1 つの優れた記事です。

これが最終的に私のために働いたポリシーファイルです。それはまったく制限的ではありません。しかし、私は物事を機能させてから、それらを正しくすることにしました。

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "/xml/dtds/cross-domain-policy.dtd">

<!-- Policy file for xmlsocket://socks.example.com -->
<cross-domain-policy> 

   <!-- This is a master socket policy file -->
   <!-- No other socket policies on the host will be permitted -->
<!--   <site-control permitted-cross-domain-policies="all"/> -->

   <!-- Instead of setting to-ports="*", administrator's can use ranges and commas -->
   <!-- This will allow access to ports 123, 456, 457 and 458 -->
   <allow-access-from domain="*" to-ports="*" secure="false"/>

</cross-domain-policy>
于 2009-07-30T03:33:02.377 に答える