Pergunta

Eu tenho um cliente Flash que eu quero conectar a um servidor. Ambos são usando computador local e porta 50000 de modo que não deve haver quaisquer problemas entre domínios. Eu também definir Network Access Só nas configurações de publicação. Quando eu chamar o XMLSocket de conexão, o servidor parece ter uma nova conexão. Mas, o retorno XMLSocket.onConnect não é chamado com sucesso = true.

Algumas ideias sobre o que pode estar errado?

Aqui está o ActionScript para criar o 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;
Foi útil?

Solução

Este acabou por ser um problema de segurança. O Flash Player adicionou segurança quando um XMLSocket é usado. O Flash Player agora procura um arquivo de política na porta 843. Uma alternativa é ter o olhar swf para o arquivo de política usando o Security.loadPolicyFile() chamada. Se o arquivo existir e todas as configurações de segurança permitem a XMLSocket, em seguida, é criada a conexão.

Confira o artigo Adobe em arquivos Política e mais informações aqui . Este é outro bom artigo sobre arquivos de política .

Aqui está o arquivo de política que finalmente funcionou para mim. Não é restritiva em tudo. Mas, eu percebi que eu fazer as coisas funcionarem e, em seguida, fazê-los direito.

<?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>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top