Question

Je souhaite connecter un client Flash à un serveur. Les deux utilisent localhost et le port 50000, il ne devrait donc y avoir aucun problème inter-domaines. J'ai également défini Accès réseau uniquement dans les paramètres de publication. Lorsque j'appelle la connexion XMLSocket, le serveur semble avoir une nouvelle connexion. Mais le rappel XMLSocket.onConnect n'est pas appelé avec success = true.

Avez-vous des idées sur ce qui ne va pas?

Voici le code ActionScript pour la création du socket.

 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;
Était-ce utile?

La solution

Cela a fini par être un problème de sécurité. Flash Player a ajouté la sécurité lorsqu'un XMLSocket est utilisé. Flash Player recherche désormais un fichier de stratégie sur le port 843. Une autre solution consiste à ce que swf recherche le fichier de stratégie à l'aide de l'appel Security.loadPolicyFile () . Si le fichier existe et que tous les paramètres de sécurité autorisent XMLSocket, la connexion est créée.

Consultez le article d'Adobe sur les fichiers de règles et d'autres informations. ici . C’est un autre bon article à propos des fichiers de règles .

Voici le fichier de stratégie qui a finalement fonctionné pour moi. Ce n'est pas du tout restrictif. Mais je me suis dit que je fais fonctionner les choses et que je les corrige ensuite.

<?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>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top