| 首页 | 新闻 | 网页 | 设计 | 色彩 | 原创 | 视觉 | 素材 | 动漫 | 酷站 | 策划 | 文案 | 访谈 | 运营 | 编程 | 数据库 | 服务器 | 下载 | 图库 | 
您的位置: 幽幽天空 > 网页 > 网页制作 > Flash教程 > Flash特别应用 > 文章正文 用户登录
如何加入透明Flas
为新浪博客添加fl
flashget下载联盟
265联盟:“Flash
新易网络提供100M
龙太极/100m/asp/
无限网络提供50M 
霞光科技50M/Htm/
苏能科技100M/FTP
悠博科技50M/FTP/

FlashCom 连接器           

FlashCom 连接器

作者:佚名 来源:不详 更新:2007-1-13 21:00:36 错误报告 我要投稿
 本连接器代码是可支持Flashcom多端口(1935,443,80),多协议(rtmp,rtmps,rtmpt)扫描.
以下是Connector.as代码片段:
//======================================; 
// Name:Connector.as 
// Auther:Kinglong 
// Email:kinglong@gmail.com 
// Date:2005-06-29 
// Desc:FCS连接器; 
//=======================================; 
import mx.events.EventDispatcher; 
//=======================================; 
class com.klstudio.fcs.Connector extends Object{ 
 //======================================; 
 private var dispatchEvent:Function; 
 public var addEventListener:Function; 
 public var removeEventListener:Function; 
 public var target:Object; 
 public var index:Number; 
 //======================================; 
 private var __connectListArray:Array; 
 private var __host_name:String; 
 private var __app_name:String; 
 private var __connected:Boolean; 
 private var __connect_list_point:Number; 
 private var __connection_num:Number; 
 private var __connection_max_num:Number; 
 private var __connection:NetConnection; 
 private var __connection_params:Object; 
 //=======================================; 
 private var __mar_next_connect:Number; 
 private var __mar_all_failed_connect:Number; 
 //=======================================; 
 function Connector(host:String,app:String){ 
  if(arguments.length>1){ 
   this.__host_name = host; 
   this.__app_name = app; 
  } 
  this.initConnector(); 
 } 
 //========================================; 
 // 初始化对象; 
 //========================================; 
 private function initConnector():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 = new Array(); 
  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}); 
  //=======================================;   
 } 
 //========================================; 
 // 启动连接表; 
 //========================================; 
 private function doActualConnect():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; 
  var i:Number; 
  for(i=0;i<this.__connectListArray.length;i++){ 
   this["temp_nc_"+i] = new NetConnection(); 
   this["temp_nc_"+i].index = i; 
   this["temp_nc_"+i].target = this; 
   this["temp_nc_"+i].onStatus = this.doStatus; 
  } 
  var connection_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); 
 } 
 //========================================; 
 // 下一个连接; 
 //========================================; 
 private function nextConnect():Void{ 
  clearInterval(this.__mar_next_connect); 
  this.__connect_list_point ++; 
  if(this.__connect_list_point<this.__connectListArray.length){   
   var connection_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); 
  } 
 } 
 //=========================================; 
 // 下一个连接; 
 //=========================================; 
 private function allFailedConnect():Void{ 
  clearInterval(this.__mar_all_failed_connect); 
  this.doActualConnect(); 
 } 
 //=========================================; 
 // 取消所有线程; 
 //=========================================; 
 private function removeAllTimeOut(ncIndex:Number):Void{ 
  if(arguments.length == 0){ 
   ncIndex = -1; 
  } 
  clearInterval(this.__mar_next_connect); 
  clearInterval(this.__mar_all_failed_connect); 
  var i:Number; 
  for(i=0;i<this.__connectListArray.length;i++){ 
   if(i == ncIndex){ 
    this.myTrace(this.__connectListArray[ncIndex].protocol+"://"+this.__host_name+":"+t
his.__connectListArray[ncIndex].port+"/"+this.__app_name+" 连接尝试成功!"); 
   }else{ 
    this["temp_nc_"+i].close(); 
    delete this["temp_nc_"+i]; 
   } 
  } 
 } 
 //=========================================; 
 private function doStatus(ncInfo:Object):Void{ 
  this.target.onStatus(this.index,ncInfo); 
 } 
 //=========================================; 
 private function onStatus(ncIndex:Number,ncInfo:Object):Void{ 
  switch(ncInfo.code){ 
   case "NetConnection.Connect.Success": 
    this.removeAllTimeOut(ncIndex); 
    this.__connection = this["temp_nc_"+ncIndex]; 
    this.__connected = true; 
    this.dispatchEvent({type:"success"});     
   break; 
   case "NetConnection.Connect.Failed": 
    this.myTrace(this.__connectListArray[ncIndex].protocol+"://"+this.__host_name+":"+
this.__connectListArray[ncIndex].port+"/"+this.__app_name+" 连接尝试失败!"); 
    if(ncIndex==this.__connectListArray.length-1){ 
     this.myTrace("所有连接尝试失败!"); 
     this.removeAllTimeOut(); 
     this.__mar_all_failed_connect = setInterval(this,"allFailedConnect",5000); 
    } 
   break; 
   case "NetConnection.Connect.Closed": 
   case "NetConnection.Connect.AppShutdown": 
    this.dispatchEvent({type:"closed"}); 
   break; 
   case "NetConnection.Connect.Rejected": 
    this.removeAllTimeOut(); 
    this.myTrace("FlashCom服务器不接收连接尝试!"); 
    this.dispatchEvent({type:"failed",data:ncInfo.application.message}); 
   break; 
  }   
 } 
 //=========================================; 
 // 调试; 
 //=========================================; 
 private function myTrace(msg:Object):Void{ 
  trace("#Connector#: "+msg); 
  getURL("FSCommand:log", "#Connector#: "+msg); 
 } 
 //=========================================; 
 // 设置连接参数; 
 //=========================================; 
 public function setConnectParams(param:Object):Void{ 
  this.__connection_params = param; 
 } 
 //=========================================; 
 // 设置连接表; 
 //=========================================; 
 public function setConnectListArray(arr:Array):Void{ 
  this.__connectListArray = arr; 
 } 
 //=========================================; 
 // 设置最大尝试连接资料; 
 //=========================================; 
 public function setConnectMaxNum(num:Number):Void{ 
  if(num>1 && num <11){ 
   this.__connection_max_num = num; 
  } 
 } 
 //=========================================; 
 // 连接FCS服务器; 
 //=========================================; 
 public function connect():Void{ 
  if(this.__connected) return; 
  this.__connection_num = 0; 
  this.doActualConnect(); 
 } 
 //=========================================; 
 // 检查是否连接成功; 
 //=========================================; 
 public function isConnected():Boolean{ 
  return this.__connected;  
 } 
 //=========================================; 
 // 获取主连接NC; 
 //=========================================; 
 public function getConnection():NetConnection{ 
  return this.__connection;  
 }  
    不过本类也不是我首创,我也是在Breeze和云开写的代码基础上优化而来的!
文章录入:skyuu    责任编辑:skyuu 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    发表评论:
    姓名:  评 分: 1分 2分 3分 4分 5分
     
  • 严禁发表危害国家安全、政治、黄色淫秽等内容的评论。
  • 用户需对自己在使用幽幽天空服务过程中的行为承担法律责任。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表机友个人观点,与本网站立场无关。