`
hgfghe3
  • 浏览: 52579 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Flex Socket编程

 
阅读更多

  比较懒,比较少上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(煎饼)创建的小例子: 
分享到:
评论

相关推荐

    flex+socket编程

    flex+socket编程实例,提供源码参考,请查看

    Flex3+Socket编程示例

    在本示例中,我们将探讨如何利用Flex3进行Socket编程,以创建一个实时通信的聊天室应用。 Socket编程是网络编程的基础,它允许两个或多个应用程序通过TCP/IP协议进行双向通信。在Flex3中,我们可以使用flash.net....

    flex Socket 通信

    Flex是一种基于ActionScript的开源框架,主要用于创建富互联网应用(RIA),而Java则是一种广泛使用的多平台编程语言,尤其在服务器端开发中占据重要地位。通过Socket通信,这两种技术可以实现实时、双向的数据交换...

    Flex Socket与C#通信

    Flex Socket与C#通信是网络编程中的一个常见应用场景,尤其在构建实时交互系统时,如聊天、游戏等。本文将深入探讨如何使用Flex Socket技术在客户端实现与C#服务器端的高效通信,以及相关的实现细节。 Flex是Adobe...

    flex socket解决安全沙漏

    Flex Socket是一种在Adobe Flex应用程序中...理解并正确应用跨域策略是关键,同时,熟悉Flex的Socket类和Java的Socket编程也非常重要。通过这些方法,可以克服安全限制,实现安全且可靠的Flex与Java之间的Socket通信。

    FLEX SOCKET

    标题“FLEX SOCKET”暗示我们将讨论的是FLEX中使用Socket类进行网络通信的部分。Socket是计算机网络编程中的一个基础概念,它允许两个应用程序之间建立直接的通信通道。在FLEX中,我们可以使用Socket类来创建客户端...

    Java socket编程实例.pdf

    虽然题目中的部分内容提到了客户端使用FlexBuilder3,但由于这部分信息不完整且与Java Socket编程直接关联不大,这里仅讨论如何使用Java实现客户端。 ##### 4.1 客户端代码框架 ```java import java.net.Socket; ...

    flex C# 基于socket 通讯 应用程序源码

    Flex和C#是两种不同的编程技术,用于构建不同的软件组件。Flex是一种用于创建富互联网应用程序(RIA)的开源框架,通常用于开发用户界面,尤其是在Web应用中。C#则是一种面向对象的编程语言,广泛应用于桌面应用、...

    flex的socket客户端连接java多线程socket服务端demo

    Socket编程是网络通信的基础,它提供了进程间通信的能力,使得两个运行在不同机器上的程序能够通过网络交换数据。在Flex中,我们可以使用`flash.net.Socket`类来创建和管理Socket连接。这个类提供了打开、关闭连接,...

    flex与socket之间的通信

    综上所述,Flex与Socket的通信是构建在线聊天功能的关键技术,涉及到客户端的ActionScript编程、服务器端的后端处理、网络通信协议以及实时数据交换的策略。理解这些知识点对于开发高效、稳定的聊天应用至关重要。

    flex java socket 文字聊天

    1. **Flex AS3编程**:使用ActionScript 3编写客户端代码,创建UI组件如文本输入框、文本显示区域和按钮,以及Socket对象用于网络通信。 2. **Socket连接**:在Flex中,通过`new Socket()`创建Socket实例,指定...

    java+flex基于socket的聊天案例

    1. Java Socket编程基础: - `java.net.Socket` 类:这是Java中的核心类,代表一个TCP连接。创建Socket对象时,需要指定服务器的IP地址和端口号。 - `ServerSocket` 类:服务器端使用,监听特定端口上的连接请求。...

    Flex 利用socket断点续传

    Flex提供了事件驱动的编程模型,可以通过监听Socket的事件(如data事件)来实时获取数据传输的状态,并据此更新进度条。需要注意的是,由于多线程操作,可能会出现线程错误,例如在并发访问资源时的同步问题。描述中...

    socket及flex饼图,柱状图,面积图实例

    Socket编程和Flex图形库是两种在IT行业中广泛使用的技术,特别是在构建实时数据可视化应用时。本文将深入探讨这两个主题,并通过实例演示如何结合使用它们来创建动态饼图、柱状图和面积图。 首先,让我们从Socket...

    flex与java采用socket方式通信

    标题中的“flex与java采用socket方式通信”是指在开发分布式应用程序时,使用Adobe Flex作为前端UI框架,通过Socket协议与Java后端服务器进行数据交互的一种技术实现。Flex是一款基于ActionScript的开源框架,用于...

    [转] flex与c#基于socket的实时互动网络游戏编程教程2

    Socket编程在C#中可以通过System.Net.Sockets命名空间下的类来实现,如Socket类,用于创建TCP或UDP连接。 描述中的链接指向了一个具体的博客文章,虽然没有提供详细内容,但可以推测该教程可能涵盖了以下知识点: ...

    Flex和java socket聊天源码

    Flex和Java Socket聊天源码是实现在线实时通信的一种技术结合,主要涉及的技术点包括Flex前端开发、Java后端Socket编程以及图文混排和表情支持。下面将详细解释这些知识点。 1. Flex:Flex是由Adobe公司开发的一套...

    FLEX与JAVA通过SOCKET通信

    总的来说,Flex与Java通过Socket通信涉及到的技术包括Flex客户端的ActionScript编程、Java服务器的Socket编程、网络协议的理解以及可能的开发和调试工具的使用。这个主题对于构建实时交互的Web应用程序,尤其是在...

    [转] flex与c#基于socket的实时互动网络游戏编程教程一

    1. **Socket编程基础**:了解Socket的工作原理,包括TCP/IP协议栈,连接建立(三次握手),数据传输和连接关闭(四次挥手)。TCP协议确保数据的可靠传输,适合网络游戏这种对数据完整性和顺序要求高的场景。 2. **...

Global site tag (gtag.js) - Google Analytics