- 浏览: 391696 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
zhchyun2008:
这里有个小问题,背景有时候会出现?不知道如何解决
分享一个ToolTip类,趋于完美! -
heiliuer:
歌词可以用,我试了好几个,都行的
百度MP3音乐API接口及应用 -
connectu:
感觉不错,英文版的。
JMX in Action -
海阔天空1991:
楼主,有没有什么途径可以知道歌曲对应的信息?
百度MP3音乐API接口及应用 -
xiegqooo:
简单的关闭 tomcat
import java.io.IO ...
关于Java钩子的使用
用flash去开发应用,,免不了网络通讯,特别是网络游戏,需要用到即使通讯。 as3提供了两个支持即时通讯的类:XMLSocket和Socket,前者其实是只支持发送字符串,而后者就强大多了,支持发送字节,相对来说比较底层,而这也给我们更多的发挥空间。 其实,flash socket的网络底层接受数据,就以与C++服务器通讯为例子,C++服务器一般会发一段一段数据过来,每段数据都是由一定结构组成的,一般是消息头和消息头,然后再逐步分层解析。 在这里,我只说接受网络底层的处理,一般一段数据前面,还有有一个4个字节左右的数据,表示的是后面网络流里的数据有多少.... 看下简单示意图
我们网络底层需要做的处理,就是根据头4个字节判断出后面的数据大小,然后把那一整块取出来,抛给上层解析,然后又在不停地侦听,收到指定大小之后,又做类似的操作,下面看详细的代码
我们网络底层需要做的处理,就是根据头4个字节判断出后面的数据大小,然后把那一整块取出来,抛给上层解析,然后又在不停地侦听,收到指定大小之后,又做类似的操作,下面看详细的代码
/** * @(#)NetBottomHandle.as * @author soda.C mail:sujun10@21cn.com * @version 1.0 * <br>Copyright (C), 2007 soda.C * <br>This program is protected by copyright laws. * <br>Program Name:GameHall * @data 2008-3-20 */ package org.sujun.net { import flash.net.Socket; import flash.events.ProgressEvent; import flash.utils.ByteArray; /** * socket数据流里的底层处理,从这里接受到服务器的数据,满足条件后就会抛出需要的字节 * 对数据流的数据,不做任何处理 */ public class NetBottomHandle { private var socket :Socket; private var listener :Function; //接受网络解析出来的数据 private var msgLen :int; //消息长度 private var msgLenMax :int; //收到的消息最大长度 private var headLen :int; //消息头长度 private var isReadHead :Boolean; //是否已经读了消息头 private var bytes :ByteArray; //所读数据的缓冲数据,读出的数据放在这里 public function NetBottomHandle() { msgLenMax = 5000; //5000字节 headLen = 4; //4个字节 bytes = new ByteArray(); } /** * 设置一个网络通讯实例 */ public function setSocket(socket:Socket):void { this.socket = socket; //监听...... socket.addEventListener(ProgressEvent.SOCKET_DATA, onServerData,false,0,true); } /** * 接受在网络层里收到的原始数据,传递过来的数据为描述长度,以及ByteArray对象functon(len,bytes) * @param listener:接受数据函数 */ public function receiverNetData(listener:Function):void { this.listener = listener; } /** * 服务器发送过来的数据都在这里接收,最底层的 */ private function onServerData(event:ProgressEvent):void { //一有收到数据的事件,就通过这个函数进行检验 parseNetData(); } /** * 解析网络数据流 */ private function parseNetData():void { //如果需要读信息头 if(isReadHead) { if(socket.bytesAvailable >= headLen) { //读出指示后面的数据有多大 msgLen = socket.readUnsignedInt(); isReadHead = false; } } //如果已经读了信息头,则看能不能收到满足条件的字节数 if(!isReadHead && msgLen <= msgLenMax) { //如果为0,表示收到异常消息 if(msgLen == 0) { //一般消息长度为0的话,表示与服务器出了错,或者即将被断开等,通知客户端,进行特别处理 listener(msgLen,null); return ; } //数据流里的数据满足条件,开始读数据 if(socket.bytesAvailable >= msgLen) { //指针回归 bytes.position = 0; //取出指定长度的网络字节 socket.readBytes(bytes, 0, msgLen); listener(msgLen,bytes); } } isReadHead = false; //如果数据流里还满足读取数据条件,继续读取数据 if(socket.bytesAvailable >= headLen) { parseNetData(); } } } }
发表评论
-
学习AS3.0全局函数
2011-07-27 20:16 1980使用目的:字符串的编码与解码。 说明:escape()函数会将 ... -
[心得] 把纯文本嵌入as3类中
2011-06-27 11:07 898必须知道文本的编码类型, 否则中文会读出乱码 [Emb ... -
两个翻转BitmapData的函数
2011-06-20 16:57 1808//向右旋转90度 public function scal ... -
http://dl.iteye.com/upload/attachment/435134/b797675d-eb2f-3c7f-8ed0-f612a5813b8
2011-06-20 16:52 1505这东西不太可能只用滤镜来实现,实实在在用程序画出来还差不多 ... -
重写FLEX组件
2011-06-20 16:05 1982一、为什么要重写组件 1、在FLEX已有组件无法满足业务需求, ... -
Flex Builder快捷键大全
2011-06-16 11:38 1886Ctrl + Shift + L :列出所有快捷键 Ctrl ... -
as3三角函数应用
2011-06-11 18:01 2252基本三角函数的计算: 角的正弦值 = 对边 / 斜边 角的余弦 ... -
Flash使用服务器时间
2011-06-07 10:36 1414在做Flash应用时,有时可能会遇到需要使用服务器时间的情况, ... -
分享一个ToolTip类,趋于完美!
2011-06-07 10:26 1278package myas { import ... -
忽略PNG透明区域的事件
2011-06-07 10:24 1888困扰了我好几天,也没人帮我解决..。 最后在网上找到了方法。 ... -
AnimationState
2011-06-03 17:20 1206package engine { impo ... -
Flex中使用三角函数sin() cos()进行圆形排列
2011-05-14 13:16 2338private const CENTRE:Point = ne ... -
Using non-embedded images in a spark BitmapImage
2011-04-18 11:21 1188TiledImage.mxml <?xml vers ... -
在Flash Player 10.2中使用原生鼠标指针
2011-04-01 17:17 1952Adobe Flash Player 10.2 版本引入了一个 ... -
童年の忆
2011-03-21 19:13 1147送给儿时的自己。 -
有时候我们需要将某个数组清空或者说重置
2011-01-27 23:35 1210有时候我们需要将某个数组清空或者说重置,我最常用的办法的是重新 ... -
利用render事件来提高as3程序的运行效率
2011-01-27 23:21 1982AS3中的DisplayObject有一个render事件,他 ... -
解决RemoteClass alias信息丢失
2011-01-17 11:31 1666问题发生场景:flex程序中存在多个module都调用一个 ... -
Flex 4 List控件分页功能的实现
2010-12-23 11:48 2831要想了解Flex 4 List控件的分页功能(paging)的 ... -
Flash 游戏设计笔记:计时器制作
2010-11-12 10:03 1506[img][/img]在游戏当中, ...
相关推荐
Flash AS3.0 Socket 编程 Flash AS3.0 中的 Socket 编程是使用 ActionScript 3.0 进行网络编程的一种方式。它允许 Flash 应用程序与服务器之间建立连接,以便进行数据交换。下面是关于 Flash AS3.0 Socket 编程的...
资源名称:flash as3.0 socket编程 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
AS3 implementation of a client library of the WebSocket protocol,as3.0 websocket 封装了 socket,可以测试,很好用
一段as3.0写的客户端代码,用来监听服务器端和发送数据用的一个例子。可作参考。socket通信
FlashSocket与C#通讯FlashSocket与C#通讯FlashSocket与C#通讯
package socket{ import flash.utils.ByteArray; public class IDEA{ public var ory:ByteArray; public var ary:Array; public var dekey:Array; public var enkey:Array; public function IDEA() { ...
AS3.0_Socket编程[归类].pdf
java编写socket服务端和客户端给予cmpp3.0
1.与Socket服务器建立连接. ...4.同Socket服务器进行握手,并确定收到了什么样的数据和如何处理这些数据. 5.与Socket服务器断开,或者当服务器想与你断开的时候发消息给你. 6.处理使用Sockets时候引发的错误.
FLASH AS3 SOCKET收发16进制示例
c# Socket 多线程 分包 发送/接受数据 客户端 分包发送数据,服务端接受并相应, 第一次接触Socket也不知道理解的对不对 有问题的还请见谅
★ 3.0版最新支持自定义socket资源及自定义命令 ★ 全面集成 TCP服务器/客户端; UDP服务器/客户端; UDP广播/组播 功能 ★ 支持多Socket并行测试, 采用树状Socket可视化界面,所有Socket句柄一目了然 ★ 在一个程序内...
Flash的Socket应用;Server用C#;As3.0
Socket底层协议Dll
Socket接受数据超时,采用Callable 接口实现
NULL 博文链接:https://as3.iteye.com/blog/938093
C# 3.0 socket通讯程序有服务器端和客户端2个程序例子,非常实用
flash socket通信
实例源码 AS3 ActionScript 3.0 Socket 源码