编辑: 麒麟兔爷 | 2019-07-04 |
管理->
服务和程序,找到 red5的那项把启动方式的自动启动改为手动或其他的.更改了 启动方式后可以找到 red5的安装目录下的 wrapper 目录下的 Red5.bat 文件,双击即可启动,这样可以 从窗口看到客户端连接的情况.关闭窗口即可关闭 red5,也可以双击 StopRed5-NT.bat关闭服务程序. 二.编写运行第一个程序 第一个程序的运行是学习的莫大回报,也是继续下面学习的关键,只有顺利的运行了第一个程序才会 更加信心百倍的去学习更深一步的知识. Red5+flex 或red5+flash 的项目一般都包括服务器和客户端俩个部分,服务器用 java,客户端用 flex 或flash.编写并编译完服务器端代码后需要把服务器的的应用部署到 red5的webapps 目录下这和 传统的 java应用没区别,客户端可以直接点击 flash 文件运行. 下面开始第一个程序的编写,它分成服务器和客户端俩部分,以后的程序也都安这种方式分. 1.编写服务器端 打开 eclipse 新建 java 工程或 javaee 工程 chapter2(如果不熟悉 eclipse 请参考附件 eclipse 的 使用) .把red5安装目录下的 red5.jar 以及 lib 目录下的 jar 都添加到工程的类库中. 新建包 first,然后新建类,类名称为 Application 并继承 ApplicationAdapter.类的代码如下: package first;
im port org.red5.server.adapter.Applic ationAdapter;
im port org.red5.server.api.IConnection;
public class Application extends ApplicationAdapter { public boolean appConnect(IConnection conn, Object[] args) { 作者:周英科 email:[email protected]:543246541
4 System .out.println( 连接 );
return true;
} public String change(String str){ System .out.println( 客户端调用服务器 );
return str.toUpperCase();
// 传入的字符串转换成大写后返回 } } 2.编写客户端 打开 flexbuilder3 新建 flex 工程 (具体 flexbuilder 的使用请参考附录) , 名字取名为 chapter2. 打开项目中 chapter2.mxml.chapter2.mxml 的代码如下: 3.部署运行程序 进入red5 的安装目录下的webapps下, 复制 test 文件夹, 把复制的文件夹改名为chapter2, 删除 chapter2\WEB-INF 目录下的文件夹. 把服务器项目下的 classes 目录下的文件夹 first 拷贝到 chapter2\WEB-INF 下. 把red5-web.properties 中的/test 替换为/chapter2. 把red5-web.xml 中的 删除. 把org.red5.server.webapp.test.Application 替换为 first.Application. 把web.xml 中的 /test 替换 为/chapter2 把 /tlds/c/WEB-INF/tlds/c.tld 删除 注意: webapps下的文件夹名chapter2,red5-web.properties 中的chapter2,web.xml中的chapter2 要保持相同,如果一个改了,其他的也改成相同的,所有以后的工程都这样. 重新启动 red5 在flexbuilder3 中选择运行菜单中的运行项运行 chapter2.在文本框里输入字符串,点击连 接按钮,然后点击调用方法按钮.上面如果显示出输入框里的字符串的大写表示运行正常. 服务器端类有俩个方法,appConnect类从 ApplicationAdapter 继承来,当flash 连接时触发, 可以返回 true 或false.True表示接受客户端的请求,false 表示拒绝客户端的请求.如果拒绝那么以后 flash和服务器端的交互服务器都不会理会, 所以当想拒绝某些ip的请求时只需有在用户连接时检查它的ip 是否在拒绝 ip 之内,如果在就返回 false,那样就可以拒之门外了.change 是自己定义的,客户可以直 接调用的一个远程方法.作用是把客户传入的参数变成大些后返回,此处目的在于运行一个 red5 和flex 交互的过程,并没有检查传入的参数是否有大写或都已经是大写. 客户端的代码稍多些,位于 之外的是图形界面的 代码,包括俩个按钮,一个输入框,一个显示文本,这就不详细讲解了,注意给按钮添加事件监听器.过 程是这样的,用户点击连接,按钮的监听器 clickConnect响应,conn.connect(rtm pURL)连接到服务 器,在服务器和客户端建立一条信息交流的通道.当这条通道打通时 netStatus 执行,把是否是打通的开 关isConnectSuccess 设置为通的.当用户再点击调用按钮时,通过这条通道调用服务器端的方法 conn.call( c hange ,responder,str.text).传给服务器字符串 str.text,当服务器端方法执行完后把返 回值给 responder 定义时的方法 resultFun,这样一个客户端与服务器交互的过程完成. 三.远程调用 通过 red5 服务器端和客户端可以直接通过方法调用来交互,这是非常方便的(想想你在一 作者:周英科 email:[email protected]:543246541