質問

サーバーに接続したいFlashクライアントがあります。どちらもlocalhostとポート50000を使用しているため、クロスドメインの問題は発生しません。また、公開設定で「アクセスネットワークのみ」を設定します。 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;
役に立ちましたか?

解決

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

ポリシーファイルに関するAdobeの記事および詳細をご覧ください。 こちら。これは、別の優れた記事ポリシーファイルについて

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

<?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>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top