Ciao
Se apri l' SWF direttamente col Flash Player non funziona per questioni di sicurezza.
Inserisci l' SWF in una pagina html e provalo, vedrai che funziona.
Salve a tutti!
Quest'oggi ho un problemino alquanto serio...almeno per le mie conoscenze.
In pratica ho creato un semplice server socket in java e l'ho messo in ascolto su localhost.
Poi ho fatto un client in as3 che non deve far altro che ricevere un messaggio di benvenuto dal server.
L'as3 è stato incluso in un fla tramite impostazione pubblicazione->impostazione . Ora la cosa strana è che quando io provo il tutto sotto ambiente adobe cs3 funziona (cioè se io faccio ctrl+invio) . Quando poi, prendo il file eseguibile swf e lo lancio non funziona più. Sapete darmi una mano in merito?
Grazie
Ciao
Se apri l' SWF direttamente col Flash Player non funziona per questioni di sicurezza.
Inserisci l' SWF in una pagina html e provalo, vedrai che funziona.
Ciao Flep,
sempre rapido a venirci in aiuto. Cmq ho provato anche con il file html stesso che mi produce ma niente!
:(
Qualche altro aiuto? Vuoi che ti posto il codice?
Se pubblichi l' SWF dal FLA e funziona, allora il codice che hai implementato è corretto.
Purtroppo Flash non è testabile al 100% in tutte le sue funzioni in locale.
Ti consiglio di provarlo sul web server.
Eh ed è questo il problema:D
recuperare un server dove far girare il server socket
Chiedo scusa ma di server side non ne capisco molto, il mio lavoro è solo Actionscript.
Ti faccio un esempio,
se ho una form mail Flash+ PHP, se la apro dal FLA e la testo, se il codice è corretto, funziona correttamente. Se invece apro l' SWF direttamente col Flash Player, la form non funziona per fattori di sicurezza.
Ora, per testarla, devo inserirla in una pagina html, caricarla sul server e andare col browser a quella pagina.
Tu dovresti fare lo stesso. inserisci l' SWF in una pagina HTML e la carichi sul server.
Vai col browser a quell' indirizzo e vedi se funziona. Se non funziona allora bisogna che guardiamo il codice.
Ciao Flep.
Ho provato ma nulla. Quello che leggevo su qualche forum è che potrebbe essere un problema di policy. Io non l'ho proprio inserito nel mio codice. Tu che ne pensi?
Ti posto il codice
socketExample.swf
Aspetto tua. Grazie milleCode:package { import flash.display.Sprite; import flash.text.*; public class socketExample extends Sprite { public function socketExample() { var socket:CustomSocket = new CustomSocket("localhost",666); CustomSocket.casella=this; } } } import flash.errors.*; import flash.events.*; import flash.net.Socket; import flash.text.*; class CustomSocket extends Socket { private var response:String; public static var casella; public function CustomSocket(host:String = null, port:uint = 0) { super(host, port); configureListeners(); } private function configureListeners():void { addEventListener(Event.CLOSE, closeHandler); addEventListener(Event.CONNECT, connectHandler); addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); addEventListener(ProgressEvent.SOCKET_DATA, socketDataHandler); } private function writeln(str:String):void { str += "\n"; try { writeUTFBytes(str); } catch(e:IOError) { trace(e); } } private function sendRequest():void { trace("sendRequest"); response = ""; writeln("GET /"); flush(); } private function readResponse():void { var str:String = readUTFBytes(bytesAvailable); response += str; casella.prova.text=response; } private function closeHandler(event:Event):void { trace("closeHandler: " + event); trace(response.toString()); } private function connectHandler(event:Event):void { trace("connectHandler: " + event); sendRequest(); } private function ioErrorHandler(event:IOErrorEvent):void { trace("ioErrorHandler: " + event); } private function securityErrorHandler(event:SecurityErrorEvent):void { trace("securityErrorHandler: " + event); } private function socketDataHandler(event:ProgressEvent):void { trace("socketDataHandler: " + event); readResponse(); } }
Il codice infatti è corretto.
Prova ad aggiugere un Policy File nella root del sever.
Come questo:
salvato con nome crossdomain.xmlHTML Code:<?xml version="1.0"?> <!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd"> <cross-domain-policy> <allow-access-from domain="www.yoursite.com" /> </cross-domain-policy>
Continua a non funzionare. Ti spiego cosa ho fatto:
aggiunto al codice la riga
Ho creato il crossdomain.xml come mi hai detto tu e posizionato nella root del mydomain.comCode:Security.loadPolicyFile( "http://www.mydomain.com/crossdomain.xml" );
Continua a non funzionarmi.
![]()
Posso sapere a cosa ti serve il socket ? nel senso, a che fine ?
Perchè forse ci sono altre soluzioni.
Bookmarks