比较懒,比较少上csdn的,如果发现留言给我没有回复,望见谅。
AS3是单线程的,虽然可以模拟多线程,但毕竟那是假的,如果开发一些大一点的项目,后台技术是必不可少的了。
对于AIR,如果要开发针对于Windows的Flex桌面程序的话,建议还是使用vb+flex或者c++ +flex,不建议使用air技术。
如果使用Flex开发BS架构的系统,它与服务端的通信有以下几种:WebService, HttpServices,RmoteObject ,Socket(Socket 、XML Socket). Socket是Flash固有的了,而且比较高效,因为它是以流的形式传递的,而webservice httpservice 是通过字符串传递的。如果使用XML Socket类来进行Socket连接的话,它是不能自动穿越防火墙的,要想穿过防火墙进行连接,则需要使用基于HTTP协议的RTMP协议。
一:Socket连接
1:建立连接
当然,要知道服务器的地址和端口,通过方法Socket.connect( )或者XMLSocket.connect( )与服务器建立连接,代码如: //Socket private var mySocket:Socket; //Socket连接 protected function BT_SKConnectClick(event:MouseEvent):void { try{ mySocket = new Socket(); mySocket.addEventListener(Event.CONNECT,mySocketOn Connect); mySocket.addEventListener(IOErrorEvent.IO_ERROR,my SocketOnError); mySocket.addEventListener(SecurityErrorEvent.SECUR ITY_ERROR,mySocketOnSecurityError); mySocket.addEventListener(ProgressEvent.SOCKET_DAT A,mySocketOnDataGet); // 连接 mySocket.connect( TI_SKIPAddress.text, int(TI_SKPort.text) ); }catch(ex:Error){} } //Socket连接成功 private function mySocketOnConnect( event:Event ):void { Alert.show("Socket已经连接."); } //Socket连接失败 private function mySocketOnError( event:Event ):void { Alert.show("Socket连接失败."); } //安全错误 private function mySocketOnSecurityError( event:Event ):void { Alert.show("发生SecurityError."); } XMLSocket的代码类似
2:关于安全沙箱问题 网上发布的.swf不可以访问本地服务器
本地未通过认证的.swf文件不可以访问任何网络资源
想夸域访问或连接1024端口,必须使用一个跨域策略文件,如果尝试连接未认证的域或者低端口服务,这样就违反了安全沙箱策略,同时会激发securityError事件,你可以通过使用一个跨域策略文件来解决,必须在Socket连接之前通过使用flash.system.Security.loadPolicyFile()方法加载策略文件:
如:Security.loadPolicyFile("http://www.Test.com/cross domain.xml"); to-ports可以设置一个或多个端口,如果不设置,FlashPlaper默认是80端口。 3:发送数据 首先使用write方法向缓存写入数据,然后使用flush()方法发送数据
writeBoolean: 只接受一个布尔值作为参数
writeByte、writeDouble、 writeFloat、 writeInt、writeUnsignedInt、writeShort :接受一个数字型参数)
writeBytes:teArray参数,偏移量参数,长度参数
writeObject:受一个object作为参数,但必须序列化为AMF格式
writeUTF、writeUTFBytes: 字符串类型参数
writeMultiByte: 串类型参数,并带有字符集参数,如ocket.writeMultiByte("example", "unicode");
flush() 将write方法写入缓存去的所有数据一并发送到服务器,并且清空缓存区。
如: //Socket发送数据 protected function BT_SKSendclick(event:MouseEvent):void { if(mySocket.connected){ mySocket.writeUTFBytes(this.TI_SKSend.text); mySocket.flush() } } 调用send()方法发送数据,send()方法可以接受任何数据类型的参数.它可以将所有的参数都转换为一个字符串类型并发送到服务器.通常参数为一个XML对象或者一个包含数据结构类似XML数据的字符串: xmlSocket.send(xml);
如: //XML Socket发送 protected function BT_XMLSKSendclick(event:MouseEvent):void { if(myXMLSocket.connected){ myXMLSocket.send(this.TI_XMLSKSend.text+"\n"); }else{Alert.show("XML Socket无法连接服务器.");} } 准确的格式完全依赖于服务器所能够接受的格式.如果服务器接受XML格式的数据,你必须发送XML格式的数据.如果服务器只接受URL编码的数据,你也必须发送URL编码的数据.
4:读取数据 方法:返回值类型 描述 字节数 readBoolean( ):Boolean 从Socket读取一个Boolean值. 1 readByte( ):int 从Socket读取一个byte值. 1 readDouble( ):Number 从Socket读取一个IEEE 754双精度浮点数. 8 readFloat( ):Number 从Socket读取一个IEEE 754单精度浮点数. 4 readInt( ):int 从Socket读取一个有符号32-bit整数值. 4 readObject( ):* 从Socket读取一个AMF-encoded对象. n readShort( ):int 从Socket读取一个有符号16-bit整数值. 2 readUnsignedByte( ):uint 从Socket读取一个无符号字节. 1 readUnsignedInt( ):uint 从Socket读取一个无符号32-bit整数 4 readUnsignedShort( ):uint 从Socket读取一个无符号16-bit整数. 2 readUTF( ):String 从Socket读取一个一个UTF8字符串. n readBytes方法: 一个uint值,指定从什么位置开始读取socket中收到数据的偏移量.默认值为0
一个uint值,用于指定读取bytes的数量.默认值为0,意思就是说将所有的可用的数据都放入ByteArray中
readUTFBytes方法:只需要一个长度参数用于指定UTF-8字节的读入数量,并且该方法会将所有读入的字节码转换成为字符串类型
为ocketData事件添加一个事件监听器,任何时候只要有新的数据从一个socket服务器发送过来,都会触发事件控制器.在事件处理器的内部我们写入我们要执行的代码去读取和处理收到的数据
在从一个Socket读数据之前,首先要判断bytesAvailable的属性.如果你不知道要读入的数据类型是什么就去读数据的话,将会产生一个错误(flash.errors.EOFError).
读取服务器中传送过来的数据,代码如下: 1)首先注册事件 mySocket.addEventListener(ProgressEvent.SOCKET_DAT A,mySocketOnDataGet); 2)事件处理 //Socket获取数据 private function mySocketOnDataGet( event:ProgressEvent ):void { this.TA_SocketGet.appendText("\r\n"); this.TA_SocketGet.appendText("Socket received " + mySocket.bytesAvailable + " byte(s) of data:\r\n"); while(mySocket.bytesAvailable){ var msg:String = mySocket.readUTFBytes(mySocket.bytesAvailable); this.TA_SocketGet.appendText(msg+"\r\n"); } } 使用XMLSocket从服务器返回的数据总是认为是一个字符串类型的数据.这样不用为任何数据类型的数据指定读取方法,这些从服务器返回的数据是没有经过任何处理的原始数据.因此,你不能通过XMLSocket连接立即使用XML,你发送和接收的都是纯字符串数据.如果你期望XML,在你处理数据之前,你必须首先将这些数据转换为一个XML的实例 注意:在data事件分发数据之前,XMLSocket实例必须从服务器收到一个表示为空的byte('\\0').也就是说,从服务器仅仅只发送所需要的字符串是不够的,必须在结尾处加入一个表示为空的byte
5:最终运行效果如:
6: 使用vs2010+Flash Builder Burrito(煎饼)创建的小例子:
发表评论
-
iphone 字符串 nsstring用法
2012-07-06 09:51 6841.4.1 字符串 可能最常使用的类就是NSStr ... -
正则表达式测试工具、网页版
2012-07-06 09:45 730有时候为了测试正则表达式、临时自己写了这么一个、我对于JS ... -
Php正则表达式
2012-07-06 09:37 6021、 perl兼容正则表达式: 模式修 ... -
如何修改酷我软件中的皮肤图片为自己的图片?
2012-07-06 09:30 624如何修改酷我中的 ... -
window.opener 的用法
2012-07-05 20:45 621window.open()支持环境: JavaScript ... -
Swing组件集合的事件处理(四)
2012-07-03 13:43 623如果我们正在创建我们自己的组件并且希望这些组件触发事件,我 ... -
Flex 与java 通信,通过BlazeDS
2012-07-02 10:25 5431. Server代码 package com.east ... -
FLEX与javascript交互
2012-07-02 10:25 571用Flex来调用同一页面中的javascript函数。调用 ... -
twaver-flex效率与性能测试
2012-07-02 10:25 608测试环境: 测试一 节点:创建图片节点; 连 ... -
Flex xml的实用操作
2012-07-02 10:25 598XML类包含用于处理XML对象的工作方法和属性。 XML类 ... -
OpenScales入门教程:第二节 : 创建第一张地图
2012-07-01 00:03 621你需要把第一 ... -
flex与C# Socket通信
2012-07-01 00:03 864Socket 通信没什么好说,一个服务端,多个客户端,很容 ... -
flex与twisted通过socket通信
2012-07-01 00:03 615flex端代码 0){ bMsg.writeUTFB ...
相关推荐
flex+socket编程实例,提供源码参考,请查看
在本示例中,我们将探讨如何利用Flex3进行Socket编程,以创建一个实时通信的聊天室应用。 Socket编程是网络编程的基础,它允许两个或多个应用程序通过TCP/IP协议进行双向通信。在Flex3中,我们可以使用flash.net....
Flex是一种基于ActionScript的开源框架,主要用于创建富互联网应用(RIA),而Java则是一种广泛使用的多平台编程语言,尤其在服务器端开发中占据重要地位。通过Socket通信,这两种技术可以实现实时、双向的数据交换...
Flex Socket与C#通信是网络编程中的一个常见应用场景,尤其在构建实时交互系统时,如聊天、游戏等。本文将深入探讨如何使用Flex Socket技术在客户端实现与C#服务器端的高效通信,以及相关的实现细节。 Flex是Adobe...
Flex Socket是一种在Adobe Flex应用程序中...理解并正确应用跨域策略是关键,同时,熟悉Flex的Socket类和Java的Socket编程也非常重要。通过这些方法,可以克服安全限制,实现安全且可靠的Flex与Java之间的Socket通信。
标题“FLEX SOCKET”暗示我们将讨论的是FLEX中使用Socket类进行网络通信的部分。Socket是计算机网络编程中的一个基础概念,它允许两个应用程序之间建立直接的通信通道。在FLEX中,我们可以使用Socket类来创建客户端...
虽然题目中的部分内容提到了客户端使用FlexBuilder3,但由于这部分信息不完整且与Java Socket编程直接关联不大,这里仅讨论如何使用Java实现客户端。 ##### 4.1 客户端代码框架 ```java import java.net.Socket; ...
Flex和C#是两种不同的编程技术,用于构建不同的软件组件。Flex是一种用于创建富互联网应用程序(RIA)的开源框架,通常用于开发用户界面,尤其是在Web应用中。C#则是一种面向对象的编程语言,广泛应用于桌面应用、...
Socket编程是网络通信的基础,它提供了进程间通信的能力,使得两个运行在不同机器上的程序能够通过网络交换数据。在Flex中,我们可以使用`flash.net.Socket`类来创建和管理Socket连接。这个类提供了打开、关闭连接,...
综上所述,Flex与Socket的通信是构建在线聊天功能的关键技术,涉及到客户端的ActionScript编程、服务器端的后端处理、网络通信协议以及实时数据交换的策略。理解这些知识点对于开发高效、稳定的聊天应用至关重要。
1. **Flex AS3编程**:使用ActionScript 3编写客户端代码,创建UI组件如文本输入框、文本显示区域和按钮,以及Socket对象用于网络通信。 2. **Socket连接**:在Flex中,通过`new Socket()`创建Socket实例,指定...
1. Java Socket编程基础: - `java.net.Socket` 类:这是Java中的核心类,代表一个TCP连接。创建Socket对象时,需要指定服务器的IP地址和端口号。 - `ServerSocket` 类:服务器端使用,监听特定端口上的连接请求。...
Flex提供了事件驱动的编程模型,可以通过监听Socket的事件(如data事件)来实时获取数据传输的状态,并据此更新进度条。需要注意的是,由于多线程操作,可能会出现线程错误,例如在并发访问资源时的同步问题。描述中...
Socket编程和Flex图形库是两种在IT行业中广泛使用的技术,特别是在构建实时数据可视化应用时。本文将深入探讨这两个主题,并通过实例演示如何结合使用它们来创建动态饼图、柱状图和面积图。 首先,让我们从Socket...
标题中的“flex与java采用socket方式通信”是指在开发分布式应用程序时,使用Adobe Flex作为前端UI框架,通过Socket协议与Java后端服务器进行数据交互的一种技术实现。Flex是一款基于ActionScript的开源框架,用于...
Socket编程在C#中可以通过System.Net.Sockets命名空间下的类来实现,如Socket类,用于创建TCP或UDP连接。 描述中的链接指向了一个具体的博客文章,虽然没有提供详细内容,但可以推测该教程可能涵盖了以下知识点: ...
Flex和Java Socket聊天源码是实现在线实时通信的一种技术结合,主要涉及的技术点包括Flex前端开发、Java后端Socket编程以及图文混排和表情支持。下面将详细解释这些知识点。 1. Flex:Flex是由Adobe公司开发的一套...
总的来说,Flex与Java通过Socket通信涉及到的技术包括Flex客户端的ActionScript编程、Java服务器的Socket编程、网络协议的理解以及可能的开发和调试工具的使用。这个主题对于构建实时交互的Web应用程序,尤其是在...
1. **Socket编程基础**:了解Socket的工作原理,包括TCP/IP协议栈,连接建立(三次握手),数据传输和连接关闭(四次挥手)。TCP协议确保数据的可靠传输,适合网络游戏这种对数据完整性和顺序要求高的场景。 2. **...