Frage

Ich habe einen Flash-Client, die ich mit einem Server verbinden möchten. Beide sind mit localhost und Port 50000, so gibt es keine Cross-Domain-Probleme sein sollte. Ich habe auch Access Network Nur in den Publishing-Einstellungen. Als ich die XMLSocket verbinden nennen, scheint der Server eine neue Verbindung zu bekommen. Aber wird der XMLSocket.onConnect Rückruf nicht mit Erfolg bezeichnet = true.

Alle Ideen, was falsch sein kann?

Hier ist das Actionscript für den Sockel zu schaffen.

 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;
War es hilfreich?

Lösung

Dies endete ein Sicherheitsproblem zu sein. Der Flash Player hat zusätzliche Sicherheit, wenn ein XMLSocket verwendet wird. Der Flash Player sucht nun nach einer Richtliniendatei auf Port 843. Eine Alternative ist den SWF-Look für die Policy-Datei zu haben, um den Anruf Security.loadPolicyFile() verwenden. Wenn die Datei vorhanden ist und alle Sicherheitseinstellungen die XMLSocket erlauben, dann wird die Verbindung erstellt.

Schauen Sie sich die Adobe Artikel über Richtliniendateien und weitere Informationen hier . Dies ist ein weiterer guter Artikel über Richtliniendateien .

Hier ist die Richtliniendatei, die schließlich für mich gearbeitet. Es ist gar nicht so restriktiv. Aber ich dachte, ich Dinge arbeiten und dann machen sie richtig.

<?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>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top