Pregunta

Tengo problemas con un script XMLSocket en AS3. Tengo un servidor Java e intento enviar datos XML, pero el servidor no está recibiendo nada. Lo más sorprendente es que mi guión funcionó muy bien hace un mes, y ahora mi oyente de IoError me devuelve:

"Error #2031: Error de socket. URL: 127.0.0.1 en test () en client_fla :: manteneline/frame1 ()"

Y mi oyente de SecurityError:

"Error #2048: Violación de sandbox de seguridad: archivo: /// c | /Documents%20and%20settings/zeph/bureau/client.swf no puede cargar datos de 127.0.0.1:18000. At test () en client_fla :: manteneline/ Frame1 () "

Traté de cambiar IP, probé en otra computadora, intenté sacar una versión anterior de mi guión, que no cambió, sin resultados.

No puedo entender por qué dejó de funcionar así. Aquí está mi guión:

package
{

    import flash.net.XMLSocket;
    import flash.events.*;
    import flash.display.MovieClip;

    public class test extends MovieClip 
    {

        public function test()
        {
            trace("pouet");
            var xmlsock:XMLSocket = new XMLSocket(); 
            xmlsock.connect("127.0.0.1", 18000);
            var xmlFormattedData = new XML('<message pseudo="Nix" value="Coucou !"/>'); 
            xmlsock.send(xmlFormattedData);
            xmlsock.addEventListener(DataEvent.DATA, onData);
            xmlsock.addEventListener(IOErrorEvent.IO_ERROR, ioerror);
            xmlsock.addEventListener(SecurityErrorEvent.SECURITY_ERROR, secuerror);
            xmlsock.send(xmlFormattedData);

        }

        private function onData(event:DataEvent):void 
        { 
            trace("[" + event.type + "] " + event.data); 
        }


        private function ioerror(event:IOErrorEvent):void 
        { 
        trace(event);
        }

        private function secuerror(event:SecurityErrorEvent):void 
        { 
        trace(event);
        }

    }

}

Me estoy enojando con esto, ¿alguien tiene una idea?

¡Gracias por leer!

¿Fue útil?

Solución

El error sugiere que está ejecutando una aplicación Flash desde su sistema de archivos local y esta aplicación desea hacer una solicitud de red (para su servidor Java).

Esto no está permitido por defecto. Puedes hacer una de las dos cosas:

  • Actualice su configuración de seguridad global en su reproductor Flash (haga clic derecho, configuración avanzada, configuración de seguridad global, luego establezca el archivo flash o la carpeta completa se permitirá hacer solicitudes de red)

  • Ejecute su aplicación Flash desde un servidor web (y asegúrese de que un CrossDomain.xml esté en su lugar en el servidor Java).

Otros consejos

Como su error indica, está experimentando una violación de seguridad de Sandbox. Esto significa que Flash no permitirá los activos de los dominios de la aplicación que no sean los suyos. Básicamente hay dos correcciones, una mucho más simple que la otra:

  1. Lea sobre cómo crear y cargar Crossdomain XML. Esto es simplemente una "política" en el servidor que se lee en ejecución de Flash. Puede ser difícil configurarse correctamente, pero esta es la ruta generalmente aceptada.

  2. En su configuración de salida, en "Seguridad de reproducción local", es posible que pueda verificar "Acceder a los archivos de red", en lugar de "acceder solo a archivos locales", y resolver su problema rápidamente.

¡Espero que ayude!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top