本连接器代码是可支持flashcom多端口(1935,443,80),多协议(rtmp,rtmps,rtmpt)扫描.
以下是connector.as代码片段:
//======================================;
//name:connector.as
//auther:kinglong
//email:kinglong@gmail.com
//date:2005-06-29
//desc:fcs连接器;
//=======================================;
importmx.events.eventdispatcher;
//=======================================;
classcom.klstudio.fcs.connectorextendsobject{
//======================================;
privatevardispatchevent:function;
publicvaraddeventlistener:function;
publicvarremoveeventlistener:function;
publicvartarget:object;
publicvarindex:number;
//======================================;
privatevar__connectlistarray:array;
privatevar__host_name:string;
privatevar__app_name:string;
privatevar__connected:boolean;
privatevar__connect_list_point:number;
privatevar__connection_num:number;
privatevar__connection_max_num:number;
privatevar__connection:netconnection;
privatevar__connection_params:object;
//=======================================;
privatevar__mar_next_connect:number;
privatevar__mar_all_failed_connect:number;
//=======================================;
functionconnector(host:string,app:string){
if(arguments.length>1){
this.__host_name=host;
this.__app_name=app;
}
this.initconnector();
}
//========================================;
//初始化对象;
//========================================;
privatefunctioninitconnector():void{
//=======================================;
eventdispatcher.initialize(this);
//=======================================;
this.__connected=false;
this.__connection_num=0;
this.__connection_max_num=3;
this.__connection=null;
this.__connection_params=null;
//=======================================;
this.__connectlistarray=newarray();
this.__connectlistarray.push({protocol:"rtmp",port:1935});
this.__connectlistarray.push({protocol:"rtmp",port:443});
this.__connectlistarray.push({protocol:"rtmpt",port:80});
this.__connectlistarray.push({protocol:"rtmps",port:443});
//=======================================;
}
//========================================;
//启动连接表;
//========================================;
privatefunctiondoactualconnect():void{
this.removealltimeout();
this.__connection_num++;
if(this.__connection_num>this.__connection_max_num){
this.mytrace("总共尝试"+this.__connection_max_num+"次都失败!");
this.dispatchevent({type:"failed",data:"服务器连接失败!"});
return;
}
this.__connect_list_point=0;
vari:number;
for(i=0;i<this.__connectlistarray.length;i++){
this["temp_nc_"+i]=newnetconnection();
this["temp_nc_"+i].index=i;
this["temp_nc_"+i].target=this;
this["temp_nc_"+i].onstatus=this.dostatus;
}
varconnection_uri:string=this.__connectlistarray[this.__connect_list_point].protocol+"://"+this.__host_name+":"+this.__connectlistarray[this.__connect_list_point].port+"/"+this.__app_name;
this.mytrace("[尝试"+this.__connection_num+"/"+this.__connection_max_num+"]连接到"+(this.__connect_list_point+1)+"/"+this.__connectlistarray.length+":"+connection_uri);
this.dispatchevent({type:"connect",data:this.__connectlistarray[this.__connect_list_point]});
this["temp_nc_"+this.__connect_list_point].connect(connection_uri,this.__connection_params);
this.__mar_next_connect=setinterval(this,"nextconnect",3000);
}
//========================================;
//下一个连接;
//==============











