- 浏览: 125226 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
zhanchaojiang:
...
Flash使用到数学、物理的公式 -
沈冠军:
太好啦,呵呵···
用Flex Builder创建第一个Flex AIR程序 -
zht110227:
代码能加上点注释吗?看着效果更好。
Flex的通信方式(N)——URLLoader -
yangkd548:
可能是SWF是2.0的原因吧,你用3.0的试试吧
Flex与Flash的交互_1(初级简单示例) -
aotie:
你好我套用你的模式!做为什么这句 flashMc=flashC ...
Flex与Flash的交互_1(初级简单示例)
AMF是Adobe独家开发出来的通信协议,它采用二进制压缩,序列化、反序列化、传输数据,从而为Flash 播放器与Flash Remoting网关通信提供了一种轻量级的、高效能的通信方式。如下图所示:
AMF(Action Message Format)是一种 binary format的资料型态,透过 AMF overHTTP的方式将flash端资料编码后传回server,server端的remotingadaptor接收到资料后则会译码回正确的native对象,交给正确的程序处理。
AMF最大的特色在于可直接将Flash内置对象,例如Object, Array, Date, XML,传回服务器端,并且在服务器端自动进行解析成适当的对象,这就减轻了开发人员繁复工作,同时也更省了开发时间。由于AMF采用二进制编码,这种方式可以高度压缩数据,因此非常适合用来传递大量的资料。数据量越大,Flash Remoting的传输效能就越高,远远超过Web Service。至于XML, LoadVars和loadVariables() ,它们使用纯文本的传输方式,效能就更不能与Flash Remoting相提并论了。
注意:Flash Remoting需要浏览器支持Binary POST,Flash 播放器在Netscape 6.x.环境下运行Flash Remoting会不起作用(Flash Remoting调用没有效果也不返回错误), Netscape 7已经纠正了这个bug 。对于早期Safari和Chimera版的苹果机也有这个问题。
下面是一个flex amf socket连接例子:
java服务器代码:
Flex端的代码如下:
AMF(Action Message Format)是一种 binary format的资料型态,透过 AMF overHTTP的方式将flash端资料编码后传回server,server端的remotingadaptor接收到资料后则会译码回正确的native对象,交给正确的程序处理。
AMF最大的特色在于可直接将Flash内置对象,例如Object, Array, Date, XML,传回服务器端,并且在服务器端自动进行解析成适当的对象,这就减轻了开发人员繁复工作,同时也更省了开发时间。由于AMF采用二进制编码,这种方式可以高度压缩数据,因此非常适合用来传递大量的资料。数据量越大,Flash Remoting的传输效能就越高,远远超过Web Service。至于XML, LoadVars和loadVariables() ,它们使用纯文本的传输方式,效能就更不能与Flash Remoting相提并论了。
注意:Flash Remoting需要浏览器支持Binary POST,Flash 播放器在Netscape 6.x.环境下运行Flash Remoting会不起作用(Flash Remoting调用没有效果也不返回错误), Netscape 7已经纠正了这个bug 。对于早期Safari和Chimera版的苹果机也有这个问题。
下面是一个flex amf socket连接例子:
java服务器代码:
/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package sockeserver; import java.io.*; import java.net.ServerSocket; import java.net.Socket; import flex.messaging.io.*; import flex.messaging.io.amf.*; import java.util.HashMap; import java.util.Map; import java.util.zip.DeflaterOutputStream; /** * * @author mumuyu99 */ public class socketServer implements Runnable { public static void main(String[] args) { start(); } //****************************************************************// private static boolean isRunning = false; //服务器运行标志 ServerSocket ss = null; //socket连接 int userIndexNumber; //用户索引号 int userCount; //房间人数 //Iterator it=null; //迭代器 //*************************消息协议*********************************// private byte type; //消息类型 private byte mainCmd; //消息主命令 private byte subCmd; //消息子命令 private byte[] data; //消息数据 private SerializationContext context = new SerializationContext(); public static void start() { socketServer server = new socketServer(); // server.heardHeart(); new Thread(server).start(); System.out.println("服务器打开"); } public void run() { try { isRunning = true; try { ss = new ServerSocket(9999); } catch (IOException ex) { System.out.println(ex.toString()); } Socket socket; while (isRunning) { socket = ss.accept(); handleCmd(socket); } } catch (IOException ex) { System.out.println(ex.toString()); } } private void handleCmd(Socket inComing) { try { DataInputStream dis = new DataInputStream(inComing.getInputStream()); DataOutputStream dos = new DataOutputStream(inComing.getOutputStream()); System.out.println("准备好接收数据!"); byte[] lang = new byte[dis.available()]; dis.read(lang); System.out.println(new String(lang, "utf-8")); Amf3Output out = new Amf3Output(context); DeflaterOutputStream stream = new DeflaterOutputStream(dos); out.setOutputStream(stream); Map map = new HashMap(); String[] arr = "1,2,3,4,5".split(","); map.put("datas", arr); map.put("userName", "mumuyu99"); map.put("fullName", "最新消息"); out.writeObject(map); stream.finish(); dos.writeUTF("你好啊"); dos.flush(); } catch (IOException ex) { System.out.println(ex.toString()); } } }
Flex端的代码如下:
<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/halo" minWidth="1024" minHeight="768" > <fx:Script> <!--[CDATA[ import flash.net.Socket; import mx.controls.Alert; private static var socket:Socket; private var byteaa:ByteArray; private function connectSocket():void{ socket=new Socket("localhost",9999) //socket.objectEncoding=ObjectEncoding.AMF3; var byteArray:ByteArray=new ByteArray(); var s:String="hello word!" byteArray.writeUTFBytes(s); socket.writeBytes(byteArray,0,byteArray.length); socket.writeMultiByte(s,"UTF-8"); socket.flush(); byteaa=new ByteArray(); socket.addEventListener(ProgressEvent.SOCKET_DATA,loaderHandler); socket.addEventListener(IOErrorEvent.IO_ERROR,errorIO); socket.addEventListener(Event.CONNECT,connectStart); } private function connectStart(event:Event):void{ Alert.show("连接成功!"); } private function errorIO(event:IOErrorEvent):void{ Alert.show("连接不到数据源!"); } private function loaderHandler(event:ProgressEvent):void { // var intervalId:uint = setTimeout(laoderInit,100); laoderInit(); } private function laoderInit():void{ var start:Number=getTimer(); while(socket.bytesAvailable>0){ socket.readBytes(byteaa); } byteaa.uncompress(); var obj:Object = byteaa.readObject(); Alert.show(obj.fullName); var end:Number=getTimer(); Alert.show("耗时:" + (end - start) + "毫秒"); } protected function button1_clickHandler(event:MouseEvent):void { connectSocket(); } ]]--> </fx:Script> <s:Button x="190" y="370" label="连接" enabled="true" click="button1_clickHandler(event)"/> </s:Application>
发表评论
-
Flash Builder 4 安装SVN
2010-11-28 00:48 1388选择菜单 帮助–> 安装新软件 在使用里键入地址: ... -
FLEX 为DataGrid 添加序号列(1)
2010-05-11 10:49 3962下面的实现方式,基本思路就是用itemrender访问父文档的 ... -
Flex设定Textinput圆角矩形输入框(转)
2010-05-07 20:20 4878(英文)原文地址 1、以下的例子展示如何通过设置focus ... -
Flex程序启动事件的顺序initialize、creationComplete、applicationComplete(转)
2010-05-06 20:01 2271<?xml version="1.0&qu ... -
用Flex Builder创建第一个Flex AIR程序
2010-04-30 10:20 1622创建一个AIR工程 先安装好Adobe AIR运行时以及设置 ... -
Flash的事件机制
2010-04-26 23:52 10791.先说一些基础的东西 ... -
target和currentTarget的区别
2010-04-26 23:08 1500target和currentTarget的区别 ... -
跨域策略文件——解决Flash安全沙箱问题
2010-04-26 16:20 3483一、基础解说 用 Flash 文档访问另一个域中的数据。F ... -
Flash Builder 入门学习资源
2010-04-06 13:48 1984Flash Builder 资源 Flash Builder ... -
Flex 开源框架及工具 整理和更新转帖
2010-03-23 13:06 10601.Caringorm 2.PureMVC 3.Mode ... -
Flex的通信方式(N)——URLLoader
2010-02-10 16:01 1439URLLoader交互的例子 < ... -
Flex设置TextInput的默认焦点、切换焦点的例子
2009-11-29 11:03 85751、首先,在加载swf的页面上写下下面的代码,控制页面将焦点设 ... -
Flex与Flash的交互_2(深层对象交互示例)
2009-11-25 11:37 1819Flex端程序 1、主程序文件TestFlex_Flash ... -
Flex与Flash的交互_1(初级简单示例)
2009-11-25 10:26 3112其实就是Flex将Flash以资源的形式加载到Flex项目中, ... -
Flex的通信方式(五)——HTTPService_3
2009-11-23 19:42 2189转载自:http://hi.baidu.com ... -
Flex的通信方式(四)——HTTPService_2
2009-11-23 19:08 1443转载自:http://cs.ntsky.com/flex3-j ... -
Flex的通信方式(三)——HTTPService_1
2009-11-18 13:38 1496MXML代码: <?xml version ... -
Flex的通信方式(二)——Webservice-2
2009-11-18 12:47 1082这里主要介绍Webservices使用AS代码的操作方法 A ... -
Flex的通信方式(一)——Webservice-1
2009-11-18 12:12 2083flex与Webservices与简单通信 1、格式: f ... -
在ActionScript工程中中实现绑定
2009-09-28 15:17 1254在ActionScript中实现绑定 这种方法是使用mx.bi ...
相关推荐
Flex AMF通讯,主要用于初学者配置FluorineFx.net服务端
抓取AMF协议的flex页面,支持模拟登录和页面抓取。
flex与java通信
flex-messaging-core-amf1.7
这是一个flex的lib库,方便开发者迅速开展amf连接操作。
功能: 支持AS3的ByteArray序列化对象的AMF格式编码、解码( readObject、writeObject )。 支持AS3的ByteArray的compress、uncompress压缩算法:...为方便想了解AMF格式及封包的坛友分析解码AMF数据资料使用。
使用 ADOBE FLEX 45访问数据 目录 第 1 章: 访问数据服务概述 Flex 与其它数据访问技术的比较 使用 Flash Builder 访问数据服务 数据访问组件 第 2 章: 使用 Flash Builder 构建以数据为中心的应用程序 创建 Flex...
NULL 博文链接:https://sjkgxf7191.iteye.com/blog/572828
amf c# flex服务端协议解析和封装。
Adobe Flex BlazeDS AMF File Format 熟悉下这个东西后,可以自己实现BlazeDS的前端和后端,至少也能在浏览器里的F12开发环境里搞明白AMF的内容了。
AMF开源FluorineFx文件太大 对于只需要序列化和反序列化AMF数据流的朋友,这个库是不错的选择 支持.net 1.1和2.0+
【flex的jar包,项目中的jar包,比较多,但是有些没用,我都放进去了大家自己取舍吧 】 【2010-12-24】提交过一版,此次加入两个官方更新的jar包。 【2011-06-14】更新:flex-messaging.jar和flex-messaging-common....
移植RMTP 看看效果 amf flex
书中详细介绍了Flex 3的相关知识点,具体包括构建、部署和调试RIA,使用功能强大的MXML语言布置应用程序,使用MXML和ActionScript构建自定义的UI组件,使用XML、基于SOAP的Web服务和远程调用协议AMF连接到数据等。...
java flex jar包 包括jar,比较的简洁明了,很容易上手。
thinkphp_amf的一个简单demo
不过,针对 Java EE 开发的服务器端应用,可以通过集成 BlazeDS,充分利用 AMF 协议并能轻易与 Flex 前端交换数据,这种方式是 Java EE 应用程序集成 Flex 的首选。 BlazeDS 是 Adobe LifeCycle Data Services 的...
get solutions for leveraging AMF protocol and synchronizing Flex client data modifications with BlazeDS-based servers; and, determine the actual performance of your application, and get suggestions ...
不过,针对 Java EE 开发的服务器端应用,可以通过集成 BlazeDS,充分利用 AMF 协议并能轻易与 Flex 前端交换数据,这种方式是 Java EE 应用程序集成 Flex 的首选。 BlazeDS 是 Adobe LifeCycle Data Services 的...
JBoss作为应用服务器、MySQL作为数据存储、Hibernate完成数据访问、Spring用来构建业务层、BlazeDS作为远程服务、 Flex用来构建富客户端,使用Maven及flex-compiler-mojo插件进行项目构建,打造全栈式Flex、BlazeDS...