as3与red5通信---学习二

本文介绍了一个使用Flash客户端调用Java服务器端代码的具体案例。客户端通过NetConnection连接到服务器,并调用服务器端的方法,传递参数并接收返回结果。

 

 

 

客户端代码


 

package test
{
  import flash.display.Sprite;
  import flash.events.NetStatusEvent;
  import flash.net.NetConnection;
  import flash.net.ObjectEncoding;
  import flash.net.Responder;
  public class TestCon extends Sprite{
    
  private var nc:NetConnection;
  public function TestCon():void{
     
    nc = new NetConnection( );            
              
    nc.objectEncoding = ObjectEncoding.AMF0;          
          
    nc.addEventListener( NetStatusEvent.NET_STATUS , netStatus );          
            
    /* 
     * 连接服务端,连接成功后方可调用服务端java代码
     * 参数true可以不写。
     */
          
    nc.connect("rtmp://localhost/red5_server",true);
      
    /*
     * 存储服务器的返回结果 ,如果返回结果没用问题调用result方法, 
     * 否则调用status方法  
     */
     
    var response:Responder = new Responder(result,status);
       
    /*
     * 调用服务端的callme方法,并把参数luqinglong,123456两个参数传过去
     * 把服务端返回结果存放在response对象当中。       
     * 注意:服务端callme的参数个数要和此一一对应, 应该为
     * public String callme(Stirng username,String password);否则回出错)
     */
      
    nc.call("callme",response,"luqinglong","123456");        
   
  }                      
      
  /* 
   * 连接上服务器,做其他操作的发生的错误。比如参数传的有问题。
   */   
  private function status(error:Object):void
  {                   
   trace("连接结果错误"+error);
  }        
       
  /*
   * 打印返回结果,一定要有个参数re,否则报错,
   * 现在只试过返回String格式的
   * 返回xml和复杂数据结构还在研究当中 
   */
        
  private function result(returnobj:Object):void{
   trace("服务端返回结果为:....."+returnobj);   
  }     
  
  /* 
   * 网络连接错误,根本就没连上
   */
              
  private function netStatus (event:NetStatusEvent):void{           
             
   trace( "连接信息........\n"+event.info.code);          
    if (event.info.code == "NetConnection.Connect.Rejected" ){                     
       trace( event.info.application );            
      }       
    }

  }  
}

 


 

服务端代码

package test;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.red5.server.adapter.ApplicationAdapter;
import org.red5.server.api.IConnection;
public class TestCon extends ApplicationAdapter{
 
 private static final Log log = LogFactory.getLog(TestCon.class );
 public TestCon(){
  
 }  
 
 public String callme(String username,String password){
  String info = "服务端接收到你的调用请求,";
         info+= "你传过来的参数如下";
         info+= "用户名:"+username ;
         info+= "密码是:"+password ; 
  
  return info ;         
  }  
       
 public boolean appStart(){
  log.info( "Red5First.appStart" );    
  return true;
 }    
 public void appStop(){
  log.info( "Red5First.appStop" );
 }
 public boolean appConnect(IConnection conn , Object[] params){   
  log.info( "Red5First.appConnect " + conn.getClient().getId() );    
  return true;  
  
 }           
 public void appDisconnect( IConnection conn , Object[] params ){ 
 
  log.info( "Red5First.appDisconnect " + conn.getClient().getId() );
  
 }
 
}
 

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值