Hola, hace varios dias estoy intentando establecer una conexion consocket
Lo logre desde mi pc pero no puedo hacerlo desde la web.
Me apoye en algunos ejemplos, que si bien no funcionaban parecian ser buenos.
uno de ellos es el de lessrain.
Aqui va el codigo de la conexion (modificado por mi) dado que no funcionaba. Repito si funciona desde mi pc hacia afuera.
Puse en negrita lo que creo que es mas importante y que no esta funcionando...
Aqui va el ejemplo "corriendo"
http://www.hableweb.com/ftp/ftp.html
Mi crossdomain es:
<?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.durangosierramadre.com' to-ports='21' />
</cross-domain-policy>
Y luego la clase que hace la conexion es:
package {
import flash.errors.IOError;
import flash.events.DataEvent;
import flash.events.Event;
import flash.events.EventDispatcher;
import flash.events.IOErrorEvent;
import flash.events.ProgressEvent;
import flash.events.SecurityErrorEvent;
import flash.net.Socket;
import flash.system.Security;
import flash.utils.ByteArray;
import Globales;
public class SocketConnection extends EventDispatcher{
public const ENABLE_TRACE:Boolean=true;
private var _socket:Socket;
private var _host:String;
private var _port:uint;
private var _policyPort:uint;
private var _path:String;
public static var _messageField:OutputField;
public function SocketConnection(host_:String="localhost",port_:ui nt=21, policyPort_:uint=80){
_host=host_;
_port=port_;
_policyPort=policyPort_;
}
public function initialize():void{
if(ENABLE_TRACE) trace("Tratando de conectar..."+_host);
Globales._messageField.addText("tratando de conectar:"+_host+"port:"+_port+" policyPort:"+_policyPort);
//Globales._messageField.reset();
_socket=new Socket();
try {
Globales._messageField.addText("estoy en try");
//Security.loadPolicyFile("xmlsocket://"+_host+":"+_policyPort);
Security.loadPolicyFile("http://"+_host+"/crossdomain.xml");
}
catch (e:IOError) {
Globales._messageField.addText("estoy en catch");
}finally{
Globales._messageField.addText("estoy en finally");
conectar();
}
}
public function conectar(){
Globales._messageField.addText("estoy en conectar");
try{
_socket.connect(_host,_port);
}catch(e:SecurityError){
Globales._messageField.addText("problemas de conexion");
}finally{
configureListeners();
}
}
public function sendRequest():void{
var request:String="";
request+="GET "+_path+" HTTP/1.1"+"\n";
request+="HOST: localhost"+"\n";
request+=""+"\n"
Globales._messageField.addText(request);
sendMultiByte(request);
}
private function configureListeners():void{
//Globales._messageField.reset();
Globales._messageField.addText("configurando listeners");
_socket.addEventListener(ProgressEvent.SOCKET_DATA ,progressDataHandler);
_socket.addEventListener(Event.CLOSE,closeHandler) ;
_socket.addEventListener(Event.CONNECT, connectHandler);
_socket.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
_socket.addEventListener(SecurityErrorEvent.SECURI TY_ERROR, securityErrorHandler);
}
public function sendMultiByte(str_:String):void{
try{
Globales._messageField.addText("sendMultiByet");
_socket.writeMultiByte(str_, "iso-8859-1");
_socket.flush();
dispatchEvent( new SocketDataEvent( SocketDataEvent.DATA_OUTPUT, str_));
Globales._messageField.addText("Enviado"+str_);
if(ENABLE_TRACE)trace("Enviado:");
if(ENABLE_TRACE) trace(str_);
}catch(e:IOError){
//var str:String=e.text;
Globales._messageField.addText(str_+"error");
}
}
private function readMultiByte():String{
var str:String = _socket.readMultiByte( _socket.bytesAvailable, "iso-8859-1" );
if(ENABLE_TRACE) trace("Recibido:");
Globales._messageField.addText("Recibido:"+str);
return str;
}
private function progressDataHandler(event:ProgressEvent):void{
Globales._messageField.addText("progress");
dispatchEvent( new SocketDataEvent( SocketDataEvent.DATA_INPUT,readMultiByte()));
}
private function socketDataHandler(event:ProgressEvent):void{
}
private function closeHandler(event:Event){
if (ENABLE_TRACE) trace("Connection cerrada: "+event);
Globales._messageField.addText("close Handler");
sendRequest();
}
private function connectHandler(event:Event):void {
Globales._messageField.addText("Connection established");
if (ENABLE_TRACE) trace("Connection established: " + event);
sendRequest();
}
private function ioErrorHandler(event:IOErrorEvent):void{
Globales._messageField.addText("ioErrorHandler");
if(ENABLE_TRACE) trace("Conexion establecida " + event);
sendRequest();
}
private function securityErrorHandler(event:SecurityErrorEvent):voi d{
SecurityErrorEvent.SECURITY_ERROR
Globales._messageField.addText("error de seguridad desde el listener"+event.text);
Globales._messageField.addText(event.toString());
if(ENABLE_TRACE) trace("Connection SecurityError: " + event);
}
}
}